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

如何配置Nginx与应用同端口监听实现带认证反向代理

问题答复

该需求完全可以实现。你之前修改监听端口后请求绕过Nginx的核心原因是端口冲突:原后端应用本身已经占用了公网网卡的5555端口,同一IP的同一个端口同一时间只能被一个进程绑定,Nginx修改配置后根本没有成功监听5555端口,请求自然直接打到后端应用上,绕过了认证逻辑。

实现步骤

  • 第一步:调整后端应用监听配置
    将原本监听所有网卡5555端口的后端应用,修改为仅监听本地回环地址的空闲端口(比如127.0.0.1:5556,端口可自定义选择未被占用的端口即可)。修改完成后重启后端应用,通过curl http://127.0.0.1:5556验证服务本地访问正常即可。

    注意:必须将后端服务绑定到127.0.0.1本地回环地址,不要绑定公网网卡,否则外部用户可以直接访问后端新端口绕过认证。

  • 第二步:修改Nginx配置
    将原配置文件调整为如下内容:
server {
    listen 5555;
    listen [::]:5555;

    server_name 123.123.123.123;

    location / {
        auth_basic "protected gateway area";
        auth_basic_user_file /etc/apache2/.htpasswd; 
        # 转发到修改端口后的本地后端服务
        proxy_pass http://127.0.0.1:5556;
        # 可选:添加常用代理头,保证后端能获取到真实客户端信息
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  • 第三步:验证配置并重载Nginx
    执行nginx -t检查配置语法无报错后,执行nginx -s reload(或对应系统的服务重载命令如systemctl reload nginx)重载配置即可。

效果验证

此时访问服务器公网IP的5555端口,会先触发Nginx的基础认证校验,校验通过后请求才会被转发到后端应用;由于后端仅监听本地回环地址,不存在外部绕过认证直接访问后端的路径。

内容的提问来源于stack exchange,提问作者M. Akar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:03:17