You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx代理Docker应用显示Docker网络IP而非用户真实IP求助

问题:Docker环境下Nginx反向代理后无法获取用户真实IP

不使用Nginx时,应用能正常获取用户真实的10.xxx.xx.xx IP;但通过Nginx反向代理后,应用显示的IP变成了Docker容器网络的192开头地址,尝试过现有解决方案均无效。

当前Nginx配置

server {
    listen 80;

    location ~* ^/websiteName/ {
        real_ip_recursive on;
        # Strip the prefix and then proxy pass
        rewrite ^/websiteName/(.*)$ $1 break;
        proxy_pass http://imt_webapp:5000;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Header-Test "X-Forwarded-For - $proxy_add_x_forwarded_for";
        proxy_set_header X-Header-Test "X-Real-IP - $remote_addr";
    }
}

当前返回的IP信息

X-Real-Ip: 192.168.144.1
X-Forwarded-For: 192.168.144.1

Docker网络相关信息

执行命令:

docker ps -q | xargs -n 1 docker inspect -f '{{.Name}} 0 {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

输出结果:

/{{container-name}}-nginx-1 0 192.168.144.3
/{{container-name}}-imt_webapp-1 0 192.168.144.2

docker-compose.yml配置

version: '3.8'
services: 
    imt_webapp:
        build: ./src/
        volumes: 
            - ./src/:/usr/src/app/
        ports: 
            - ${FLASK_PORT}:5000
        environment: 
            PORT: 5000
            FLASK_DEBUG: 1
        networks:
            - mynet

    imt_database:
        image: mysql:8.0
        environment:
            MYSQL_ROOT_PASSWORD: ${DATABASE_PASSWORD}
            MYSQL_DATABASE: ${DATABASE_NAME}
        ports:
           - "${DATABASE_PORT}:3306"
        volumes:
            - imt-mysql-data:/var/lib/mysql
        networks:
            - mynet
    nginx:
        image: nginx:latest
        ports:            
          - "80:80"
        volumes:
            - ./nginx:/etc/nginx/conf.d   
        networks:
            - mynet
volumes:
  imt-mysql-data:

networks:
  mynet:
    external: False

内容的提问来源于stack exchange,提问作者Frank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 01:11:20