本文最后更新于 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的博客
评论