有一台阿里云的服务器,我用 docker compose 起了一套测试环境,需要获取用户真实 IP,Google 了挺久一直没解决,所以跑 V2EX 来问问大佬们。
Web Server 是 Openresty,后端是 PHP
docker-compose 文件部分如下:
version: '3.8'
services:
openresty:
image: ${OPENRESTY_IMAGE}
container_name: openresty
build:
context: ./service/openresty
ports:
- "80:80"
- "443:443"
volumes:
- ${SOURCE_DIR}:/home/wwwroot/:rw
- ${OPENRESTY_SSL_DIR}:/etc/nginx/ssl:rw
- ${OPENRESTY_CONF_DIR}:/etc/nginx/conf.d/:rw
- ${OPENRESTY_CONF_FILE}:/usr/local/openresty/nginx/conf/nginx.conf:ro
- ${OPENRESTY_LUA_DIR}:/usr/local/openresty/nginx/lua/:rw
- ${OPENRESTY_LOG_DIR}:/home/wwwlogs/openresty/:rw
restart: always
networks:
- frontend
depends_on:
- php
php:
image: ${PHP_IMAGE}
container_name: php
build:
context: ./service/php
volumes:
- ${SOURCE_DIR}:/home/wwwroot/:rw
- ${PHP_LOG_DIR}:/var/log/php
- ${DATA_DIR}/composer:/tmp/composer
#- ${PHP_CONF_FILE}:/usr/local/etc/php/php.ini
#- ${PHP_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf
#- ${SUPERVISOR_CONF_FILE}:/etc/supervisord.conf
#- ${SUPERVISOR_CONF_DIR}:/etc/supervisor/conf.d
restart: always
networks:
- frontend
- backend
depends_on:
- mysql
遇到的情况就是,不管是 Openresty 的 log , 还是程序打印出来的 $_SERVER['REMOTE_ADDR'] 都是 docker 网关的地址,拿不到真实的用户 IP,就很尴尬...
有没有大佬能提点一下,谢谢啦
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.