本文最后更新于 2020年08月13日
目录
前言
本博客是使用docker进行部署,刚建站的时候没有考虑太多,时间久了,暴露出的问题就越来越多,最要命的就是网站被攻击却无法很好的防御,因为IP一水的宿主机IP
nginx配置真实IP传递
我之前写过nginx开启反向代理并开启https和http2,配置文件是有开启传递真实ip的,但是docker中的wordpress还是无法获取
server {
server_name blog.sleele.top; # 替换成自己的域名
listen 80 ;
location / {
proxy_pass http://172.17.0.3:1234; #这个ip,端口替换成你自己的
proxy_redirect default;
# 保证获取到真实IP
proxy_set_header X-Real-IP $remote_addr;
# 真实端口号
proxy_set_header X-Real-Port $remote_port;
# X-Forwarded-For 是一个 HTTP 扩展头部。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 在多级代理的情况下,记录每次代理之前的客户端真实ip
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
# 获取到真实协议
proxy_set_header X-Forwarded-Proto $scheme;
# 真实主机名
proxy_set_header Host $host;
# 设置变量
proxy_set_header X-NginX-Proxy true;
}
}
其实原因在于docker WordPress默认代理是Apache,相当于我只修改了一级代理而没有修改二级代理
开启Apache真实IP传递
首先先建议备份站点后再进行操作
由于我当时建站的时候一把梭,网站内容全在容器里,还没有做持久化,等服务器到期了,迁移站点的时候,我真要好好改一下架构了
vi remoteip.load
# 填写以下内容
LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so
vi remoteip.conf
# 填写以下内容
RemoteIPHeader X-Forwarded-For
RemoteIPProxiesHeader X-Forwarded-By
# 拷贝文件到容器内
docker cp remoteip.load wordpress:/etc/apache2/mods-enabled/remoteip.load
docker cp remoteip.conf wordpress:/etc/apache2/mods-enabled/remoteip.conf
docker restart wordpress
成功
原创声明
本文由 NG6 于2020年03月19日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:让docker中的WordPress获取nginx反向代理后的真实IP | sleele的博客
本文由 NG6 于2020年03月19日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:让docker中的WordPress获取nginx反向代理后的真实IP | sleele的博客