type
status
slug
summary
tags
category
icon
password
new update day
Property
Oct 22, 2023 01:31 PM
created days
Last edited time
Oct 22, 2023 01:31 PM
nginx+wordpress-docker镜像获取真实IP
因为想偷懒以及维护的方面、所以就将我的博客
docker
化了、采用了 nginx 在前、apache 在后的架构。在完成了构建以及启动之后、我发现 WP 统计
这个插件获取不到真实的用户IP、导致访问的IP全是 docker 容器的IP。让人好生郁闷。获取真实IP的方法
nginx 获取真实IP的方法
因为我是使用 nginx 将用户的请求反向代理回送至后端的
wordpress
镜像的,所以最先是拿它下手的,话不多说放配置文件。nginx 虚拟主机配置文件
测试
经过测试发现、wordpress 还是无法正常获取到真实IP。按道理来说、已经配置成功了。不知道细心的你发现没有那就是、wordpress 镜像默认是使用 apache 做
web 服务器
的所以现在的情况是、与后端之间存在了两层代理,即 一级代理 nginx;二级代理 apache
、之所以后端获取不到是因为还未在 apache
上进行相关配置、将真实IP传递到 REMOTE_ADDR
变量中(wordpress 统计插件默认取REMOTE_ADDR
变量的值。- 测试结果:
配置 apache 以获取用户真实IP
经过多方搜集尝试,了解到 apache2.4提供了自带的remoteip模块可以实现获取真实ip。
将
/etc/apache2/mods-available
文件夹内的 remoteip.load
复制到 /etc/apache2/mods-enabled/
文件目录下,并新建配置文件 remoteip.conf
注意:因为考虑到容器大小、所以镜像内并没有集成编辑器、需要临时安装、而且容器一旦删除、已经安装的软件也会没有、不过咱们现在只是做个测试、可以直接安装进行更改测试。
- remoteip.load
- remoteip.conf
- 测试结果
修改 docker-compose.yaml
配置文件
1. 查看相关配置文件的路径
2. 查看已启用模块配置文件夹
从下面可以看出启用模块的方式就是创建一个链接、将
mods-available
内的文件链接至 mods-enabled
文件夹、所以我们若想启用 remoteip
模块、只需将 remoteip.conf
remoteip.load
文件放入即可。3. 修改 docker-compose.yaml
文件、挂载相应文件
- 在宿主机上创建相应文件
- remoteip.load
- remoteip.conf
- 修改
wordpress
服务的相关配置项
- 重建容器
- 测试
可以看出文件已经挂载成功
- 测试正常、收工!
- 作者:tangcuyu
- 链接:https://expoli.tech/articles/2019/07/27/1564656217457
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章