Apache接收反代前端真实IP 作者: Hogwarts 发布于: 2022-04-16 更新于: 2022-04-16 分类: 默认分类 静下心来终于把这个问题解决了。 说一下使用的需求吧。 众所周知:套cloudflare并不能真正隐藏VPS的真实IP。 我认为真正隐藏VPS的方法还得是反向代理。 虽说Nginx的反向代理强大,但并不是我这样的票友所能驾驭的。1IP的小站还是用caddy v1吧。 #一、架构 后端VPS为LAMP,前端为caddy v1。 #二、前端配置 ##2.1 前端caddyfile的配置 donmain.com:80 { redir https://donmain.com{uri} } donmain.com:443 { gzip log /var/log/caddy/access.log errors /var/log/caddy/error.log tls /etc/caddy/fullchain.cer /etc/caddy/private.key proxy / https://domain.com { #仅供参考 可能有些配置多余 transparent websocket header_upstream -Origin header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} header_upstream X-Forwarded-Port {server_port} header_upstream X-Forwarded-Proto {scheme} } header / { Strict-Transport-Security "max-age=31536000;" } } ##2.2 前端hosts的配置 vim /etc/hosts 152.69.198.xx domain.com #格式为: IP 域名 ##2.3 重启caddy #三、后端配置 前提:后端VPS已安装lamp.sh脚本。 如不是lamp.sh搭建的环境,可能配置不成功。 ##3.1 修改httpd.conf vim /usr/local/apache/conf/httpd.conf 把第135行的#号去掉 去掉后是下面样子 LoadModule remoteip_module modules/mod_remoteip.so ##3.2 配置apache日志格式 vim /usr/local/apache/conf/httpd.conf 把326行、327行、331行中的第一个 %h 改为 %a 把331行中后面的 %I %O 删除 修改后是这个样子 LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%a %l %u %t \"%r\" %>s %b" common # You need to enable mod_logio.c to use %I and %O LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedio ##3.3 修改网站配置文件 vim /usr/local/apache/conf/vhost/网站域名.conf 将下列两行分别添加到80和443配置的 前面 RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 152.36.23.2(前端VPS的IP) ##3.4 重启apache #四、使用的场景 为何多此一举要把真实IP传递给后端呢。 因为后端./htaccess中限制IP登录了。 具体还有待测试。 #五、参考 [Docker Compose + Caddy 部署思源笔记](https://ld246.com/article/1637645441276 "Docker Compose + Caddy 部署思源笔记") [Apache 反向代理,Laravel获取用户真实IP](https://blog.csdn.net/qq_22227087/article/details/91519602 "Apache 反向代理,Laravel获取用户真实IP") 标签: caddy, apache, 反向代理