nginx 负载均衡器从昨天开始仍然无法工作。我在 WSL2 实例上的 3 个 docker 容器上运行一个微服务,端口为 4001、4002、4003,通过浏览器访问(sudo docker run -d -p 4003:80 --name asciiflow3 dominicbreuker/asciiflow2
)。我没有安装 nginx,所以它只是来自一个 nginx 容器。sudo docker build -t nginx-asciiflow .
为 nginx 构建 docker 镜像并运行sudo docker run --name nginx-asciiflow --network host -d nginx-asciiflow
当我打开 http://localhost/ 时,我希望显示服务的主页,但它只是 nginx 默认设置。事实是,访问 http://localhost:4001/ 等可以正确重定向到微服务页面。
我的配置文件是
events { worker_connections 1024; }
http {
upstream worker {
server localhost:4001;
server localhost:4002;
server localhost:4003;
}
server {
listen 80 default_server ssl;
location / {
proxy_pass http://worker;
proxy_set_header Host $host;
proxy_redirect off;
}
}
}
我尝试过default_server
只使用 ,然后不使用两者default_server ssl
。我已将传出端口更改为 8080。我尝试过将 url 扩展到http://worker/index
并更改location /
为location /index
,但访问 localhost/index 仍然导致 nginx 404 页面。使用 和location /worker/index/
也一样https://worker/index/
。我尝试过使用和不使用proxy_set_header
和proxy_redirect
。我确保容器使用正确的端口(例如 4001:80),检查分号,并确保 url 没有尾随斜杠。我尝试拉出上游工作器和服务器块,删除 http。没有其他 nginx 配置可以覆盖此文件。我整晚都在修复这个问题,但什么都没用。我累了,我该如何解决这个问题?我的朋友成功做到了这一点,但他们的建议没有用。
我读过很多类似的问题,但都没有解决。以下是列表:
- https://stackoverflow.com/questions/15335002/nginx-simple-proxy-pass-to-localhost-not-working
- Nginx,proxy_pass 无法与域名一起使用
- https://stackoverflow.com/questions/16157893/nginx-proxy-pass-404-error-dont-understand-why
- https://stackoverflow.com/questions/30194115/nginx-proxy-pass-doesnt-work-on-port-80
- nginx 负载均衡器重写以监听端口
- 让 nginx 在反向代理时传递上游的主机名
- 使用 NGINX 将 HTTPS 请求代理到 HTTP 后端
- Docker Nginx 反向代理配置