隐约雷鸣 阴霾天空 但盼风雨来 能留你在此

隐约雷鸣 阴霾天空 即使天无雨 我亦留此地

让docker中的WordPress获取nginx反向代理后的真实IP

《让docker中的Wordpress获取nginx反向代理后的真实IP》

前言

本博客是使用docker进行部署,刚建站的时候没有考虑太多,时间久了,暴露出的问题就越来越多,最要命的就是网站被攻击却无法很好的防御,因为IP一水的宿主机IP

《让docker中的Wordpress获取nginx反向代理后的真实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

成功

《让docker中的Wordpress获取nginx反向代理后的真实IP》
点赞

可以不需要填写邮箱(仅回复通知)和昵称直接评论,评论将在审核后通过

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据