Nginx反向代理Docker容器Web应用返回404错误问题求助
问题定位步骤
- 首先检查Nginx配置语法是否合法:执行
nginx -t,如果返回报错信息,根据提示修正对应配置项即可。 - 核对上游服务端口拼写:你配置中
/brock路径对应的代理端口为8081,但实际启动容器映射的宿主机端口为8001,端口不匹配会导致转发失败。 - 检查Nginx默认站点优先级冲突:Ubuntu系统默认安装的Nginx会在
/etc/nginx/sites-enabled/目录下生成default配置文件,该配置同样监听80端口,且优先级高于你新增的配置,请求会优先匹配到默认站点的静态文件目录,找不到对应路径就返回404。 - 检查配置是否已重载生效:新增软链接后如果未执行Nginx配置重载操作,修改的配置不会生效。
- 查看Nginx错误日志精准定位:执行
tail -f /var/log/nginx/error.log,同时发起curl localhost/chad或curl localhost/brock请求,可通过实时日志确认具体报错原因。
解决方案
- 修正
/etc/nginx/sites-available/localhost.conf配置,调整端口错误并新增server_name明确匹配规则,修改后内容如下:
server { listen 80; server_name localhost; location /chad { proxy_pass http://127.0.0.1:8000/; } location /brock { proxy_pass http://127.0.0.1:8001/; } }
- 删除Nginx默认站点软链接:执行
rm /etc/nginx/sites-enabled/default - 验证配置语法无错误:执行
nginx -t,返回test is successful代表配置合法 - 重载Nginx配置使修改生效:执行
systemctl reload nginx - 重新测试访问:再次执行
curl localhost/chad和curl localhost/brock即可正常获取容器返回的页面内容。
内容的提问来源于stack exchange,提问作者Mullins
相关产品推荐
相关产品推荐

