因为某些需求,需要把前后端部署在同一个端口,配置nginx反向代理,如下
在运行时已经将80端口映射到8848,并且能正确访问前端的页面。我预期是访问http://localhost:8848/zssrapi/xxx时能转到后端实际端口http://localhost:8123/zssrapi/xxx。但是尝试之后报错404,如图,
求助解决办法qaq
因为某些需求,需要把前后端部署在同一个端口,配置nginx反向代理,如下
在运行时已经将80端口映射到8848,并且能正确访问前端的页面。我预期是访问http://localhost:8848/zssrapi/xxx时能转到后端实际端口http://localhost:8123/zssrapi/xxx。但是尝试之后报错404,如图,
求助解决办法qaq
首先,你需要检查几个关键点来确保你的 Nginx 配置正确。
curl localhost:8123
来测试这个。如果你得到一个类似 curl: (7) Failed to connect to localhost port 8123: Connection refused
的错误,那么你的后端服务可能没有运行。localhost
上看到彼此。如果你的网络不是这样的,你可能需要查看你的网络文档来确保你可以从 Nginx 容器访问后端服务。server
或 location
块中设置一个 proxy_pass
指令,像这样:location /zssrapi/ {
proxy_pass http://localhost:8123/;
}
在这个例子中,所有的 /zssrapi/
开头的请求都会被转发到 http://localhost:8123/
。
docker restart <container-name>
来完成这个操作。如果以上所有的检查都没有问题,但你仍然遇到问题,那么可能需要更深入地查看你的日志以找出更多信息。你可以通过 docker logs <container-name>
来查看 Nginx 的日志。
10 回答11.1k 阅读
15 回答8.4k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
这里应该是nginx配置文件没有匹配到。
nginx匹配的规则是这样的,先根据
listen 端口
来匹配,如果客户端请求的 端口 能匹配上,那么就会根据 server_name 来匹配,如果 server_name 和请求的 Host 能匹配上,nginx就会用匹配上的这个server块处理请求,如果匹配不上,那么就会使用默认的server块。猜测配置文件的 server_name 应该和实际访问 nginx 携带的Host是不匹配的,所以请求没有匹配到这里,走到了默认的server块了。
解决方法:可以把
server_name
改成你实际的域名,匹配上了应该就没问题。或者,把listen端口改成一个其他的值,比如81,然后把端口映射8848重新映射到81端口。这样nginx就能正常匹配到了。