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

Docker部署Nginx使用非80端口映射跳转异常问题求助

问题原因

该问题由Nginx默认的重定向规则导致:默认配置下Nginx开启了absolute_redirect与port_in_redirect参数,生成3xx重定向响应时,会使用容器内部监听的80端口作为重定向地址的端口,不会继承宿主机映射的外部自定义端口,因此跳转时会丢失8080这类非80映射端口。
Apache httpd默认的重定向规则会优先使用请求头Host字段携带的端口生成跳转地址,因此端口映射场景下无需额外配置即可正常运行。

解决方案
  • 步骤1:导出Nginx默认配置
    执行以下命令导出官方Nginx镜像自带的默认站点配置文件:
    docker run --rm nginx cat /etc/nginx/conf.d/default.conf > default.conf

  • 步骤2:修改配置文件
    打开导出的default.conf文件,找到server配置块,在块内新增两行配置,原有其他配置保持不变:

server {
    listen       80;
    server_name  localhost;

    # 新增以下两行配置
    absolute_redirect off;
    port_in_redirect off;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
  • 步骤3:挂载配置启动容器
    启动容器时新增自定义配置的挂载参数,最终启动命令如下:
    docker run -d -p 8080:80 -v /path/to/site:/usr/share/nginx/html -v ./default.conf:/etc/nginx/conf.d/default.conf nginx
效果验证

容器启动完成后访问http://localhost:8080,点击站内链接会自动保留8080端口,不再跳转到缺失端口的80端口地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:09:03