docker部署项目,nginx容器对后端api反向代理,nginx报错404?-灵析社区

半寸时光爱思考

因为某些需求,需要把前后端部署在同一个端口,配置nginx反向代理,如下![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/2b3cf332fd2130f36ffcc513c7b506a6.png) 在运行时已经将80端口映射到8848,并且能正确访问前端的页面。我预期是访问[http://localhost:8848/zssrapi/xxx](https://link.segmentfault.com/?enc=uxpA6Hq88fV4QkkuHRCnHw%3D%3D.pN5IHAL02JwF6vVYaXCVLlurQKvYGHOihjJFNomyuLqU8bCbHuzz6O9WbfPAHnU7)时能转到后端实际端口[http://localhost:8123/zssrapi/xxx](https://link.segmentfault.com/?enc=0krsSAuYup9uBy74sQ%2F4Og%3D%3D.CkGXd6aDmKv9kqErKinncnjdO3%2BzTyKgn%2FELaDxNoQzpJUMsPJqMsjjTKCddekd3)。但是尝试之后报错404,如图,![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/b046f9ee399f9b0bd2877ce5b4c5651d.png) ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/c73313bb540b19b83d081f892a3dd13c.png) 求助解决办法qaq

阅读量:18

点赞量:0

问AI
这里应该是nginx配置文件没有匹配到。 nginx匹配的规则是这样的,先根据 "listen 端口" 来匹配,如果客户端请求的 端口 能匹配上,那么就会根据 server_name 来匹配,如果 server_name 和请求的 Host 能匹配上,nginx就会用匹配上的这个server块处理请求,如果匹配不上,那么就会使用默认的server块。 猜测配置文件的 server_name 应该和实际访问 nginx 携带的Host是不匹配的,所以请求没有匹配到这里,走到了默认的server块了。 解决方法:可以把 "server_name" 改成你实际的域名,匹配上了应该就没问题。 或者,把listen端口改成一个其他的值,比如81,然后把端口映射8848重新映射到81端口。这样nginx就能正常匹配到了。