502 Bad Gateway. Nginx无法使用反向代理与docker-compose连接

shstlldc  于 2023-11-17  发布在  Nginx
关注(0)|答案(2)|浏览(231)

你好,我想马上说的是,我一直在使用docker-compose和nginx没有这么长时间,对不起,如果你会看到一些错误,从我自己的。
我遇到了nginx设置的问题,现在几天都解决不了。我的任务是使用docker-compose连接到我本地comp上的另一个容器。在第一个容器中,我使用反向代理,将我的请求转发到另一个容器,并运行xboxyterlab。但当我连接到xboxyter时,我总是得到**502 Bad Gateway**,但这两个容器运行。也许xboxyter不需要,但是在反向代理中的应用程序
我假设问题出在我的docker-compose网络上,但我使用了不同的方法,但不幸的是,我总是遇到同样的问题
所以我的docker-compose看起来像这样

  1. version: '3.8'
  2. services:
  3. jupyterlab:
  4. build:
  5. ...
  6. volumes:
  7. - ...
  8. ports:
  9. - "8888:8888"
  10. networks:
  11. - new-networks
  12. nginx:
  13. build:
  14. ...
  15. ports:
  16. - "80:80"
  17. networks:
  18. - new-networks
  19. networks:
  20. new-networks:
  21. driver: bridge
  22. ipam:
  23. driver: default
  24. config:
  25. - subnet: 127.0.0.0/16

字符串
在Jupyter的Dockerfile中,我有EXPOSE 8888
在nginx容器中,我使用sites-enable文件名为domain(所以127.0.0.1),而不是nginx.conf(但在这个任务中,我也使用了nginx.conf,但我得到了相同的错误)
我在nginx中的设置(文件名:127.0.0.1):

  1. upstream backend {
  2. server 127.0.0.1:8888;
  3. }
  4. server {
  5. listen 80;
  6. listen [::]:80;
  7. root /var/www/127.0.0.1/html;
  8. index index.html index.htm index.nginx-debian.html;
  9. server_name 127.0.0.1 www.127.0.0.1 ;
  10. location /jupyter {
  11. proxy_pass http://backend/;
  12. }
  13. location /status {
  14. default_type application/json;
  15. return 200 '{"status": "All good"}';
  16. }
  17. }


我尝试在upstream和proxy_pass中使用另一个域(如172...)。尝试set_headers。更改ufw(但不太多)。但总是相同的错误(502)。
我在nginx中检查了我的日志(如果在upstream中我写127.0.0.1:8888),它得到:

  1. connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: 127.0.0.1, request: "GET /jupyter HTTP/1.1", upstream: "http://127.0.0.1:8888/", host: "127.0.0.1"


当我写172...:8888 un upstream(here I got 404 error):

  1. *2 open() "/var/www/127.0.0.1/html/lab" failed (2: No such file or directory), client: 172.18.0.1, server: 127.0.0.1, request: "GET /lab? HTTP/1.1", host: "127.0.0.1"

upd.2

我也试过用途:

  1. upstream backend {
  2. server jupyterlab:8888;


但我只得到404

  1. *6 open() "/var/www/127.0.0.1/html/lab" failed (2: No such file or directory), client: 172.20.0.1, server: 127.0.0.1, request: "GET /lab? HTTP/1.1", host: "127.0.0.1"

upd.3

现在我改变了我的nginx conf文件,现在get another 404不像往常一样。

  1. upstream jupyter {
  2. server jupyterlab:8888;
  3. }
  4. server {
  5. listen nginx:80;
  6. server_name 127.0.0.1 www.127.0.0.1 ;
  7. location /jupyter {
  8. proxy_pass http://jupyter;
  9. }
  10. location /ping {
  11. default_type application/json;
  12. return 200 '{"status": "All good"}';
  13. }
  14. }


在日志文件中,我得到了新的错误:

  1. 2023/11/01 12:52:08 [error] 25#25: *3 open() "/usr/share/nginx/html/static/style/index.css" failed (2: No such file or directory), client: 172.24.0.1, server: 127.0.0.1, request: "GET /static/style/index.css?v=30372e3246a801d662cf9e3f9dd656fa192eebde9054a2282449fe43919de9f0ee9b745d7eb49d3b0a5e56357912cc7d776390eddcab9dac85b77bdb17b4bdae HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.14/jupyter"
  2. 2023/11/01 12:52:08 [error] 26#26: *2 open() "/usr/share/nginx/html/static/style/bootstrap-theme.min.css" failed (2: No such file or directory), client: 172.24.0.1, server: 127.0.0.1, request: "GET /static/style/bootstrap-theme.min.css?v=8b2f045cb5b4d5ad346f6e816aa2566829a4f5f2783ec31d80d46a57de8ac0c3d21fe6e53bcd8e1f38ac17fcd06d12088bc9b43e23b5d1da52d10c6b717b22b3 HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.14/jupyter"
  3. 2023/11/01 12:52:08 [error] 26#26: *1 open() "/usr/share/nginx/html/static/style/bootstrap.min.css" failed (2: No such file or directory), client: 172.24.0.1, server: 127.0.0.1, request: "GET /static/style/bootstrap.min.css?v=0e8a7fbd6de23ad6b27ab95802a0a0915af6693af612bc304d83af445529ce5d95842309ca3405d10f538d45c8a3a261b8cff78b4bd512dd9effb4109a71d0ab HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.14/jupyter"
  4. 2023/11/01 12:52:08 [error] 27#27: *4 open() "/usr/share/nginx/html/static/style/index.css" failed (2: No such file or directory), client: 172.24.0.1, server: 127.0.0.1, request: "GET /static/style/index.css?v=30372e3246a801d662cf9e3f9dd656fa192eebde9054a2282449fe43919de9f0ee9b745d7eb49d3b0a5e56357912cc7d776390eddcab9dac85b77bdb17b4bdae HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.14/jupyter"
  5. 2023/11/01 12:52:08 [error] 25#25: *3 open() "/usr/share/nginx/html/static/logo/logo.png" failed (2: No such file or directory), client: 172.24.0.1, server: 127.0.0.1, request: "GET /static/logo/logo.png?v=a2a176ee3cee251ffddf5fa21fe8e43727a9e5f87a06f9c91ad7b776d9e9d3d5e0159c16cc188a3965e00375fb4bc336c16067c688f5040c0c2d4bfdb852a9e4 HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.14/jupyter"
  6. 2023/11/01 12:52:08 [error] 26#26: *2 open() "/usr/share/nginx/html/static/style/bootstrap-theme.min.css" failed (2: No such file or directory), client: 172.24.0.1, server: 127.0.0.1, request: "GET /static/style/bootstrap-theme.min.css?v=8b2f045cb5b4d5ad346f6e816aa2566829a4f5f2783ec31d80d46a57de8ac0c3d21fe6e53bcd8e1f38ac17fcd06d12088bc9b43e23b5d1da52d10c6b717b22b3 HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.14/jupyter"
  7. 2023/11/01 12:52:08 [error] 25#25: *3 open() "/usr/share/nginx/html/static/style/bootstrap.min.css" failed (2: No such file or directory), client: 172.24.0.1, server: 127.0.0.1, request: "GET /static/style/bootstrap.min.css?v=0e8a7fbd6de23ad6b27ab95802a0a0915af6693af612bc304d83af445529ce5d95842309ca3405d10f538d45c8a3a261b8cff78b4bd512dd9effb4109a71d0ab HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.14/jupyter"
  8. 2023/11/01 12:52:08 [error] 26#26: *2 open() "/usr/share/nginx/html/static/style/bootstrap-theme.min.css" failed (2: No such file or directory), client: 172.24.0.1, server: 127.0.0.1, request: "GET /static/style/bootstrap-theme.min.css?v=8b2f045cb5b4d5ad346f6e816aa2566829a4f5f2783ec31d80d46a57de8ac0c3d21fe6e53bcd8e1f38ac17fcd06d12088bc9b43e23b5d1da52d10c6b717b22b3 HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.14/jupyter"
  9. 2023/11/01 12:52:08 [error] 27#27: *4 open() "/usr/share/nginx/html/static/style/index.css" failed (2: No such file or directory), client: 172.24.0.1, server: 127.0.0.1, request: "GET /static/style/index.css?v=30372e3246a801d662cf9e3f9dd656fa192eebde9054a2282449fe43919de9f0ee9b745d7eb49d3b0a5e56357912cc7d776390eddcab9dac85b77bdb17b4bdae HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.14/jupyter"
  10. 2023/11/01 12:52:08 [error] 26#26: *1 open() "/usr/share/nginx/html/static/logo/logo.png" failed (2: No such file or directory), client: 172.24.0.1, server: 127.0.0.1, request: "GET /static/logo/logo.png?v=a2a176ee3cee251ffddf5fa21fe8e43727a9e5f87a06f9c91ad7b776d9e9d3d5e0159c16cc188a3


如果我在Jupyter server中转换,我将得到basic 404 error。日志将如下所示:

  1. 2023/11/02 11:15:54 [error] 25#25: *2 open() "/usr/share/nginx/html/lab" failed (2: No such file or directory), client: 172.25.0.1, server: 127.0.0.1, request: "GET /lab HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.14/jupyter"
  2. 2023/11/02 11:15:54 [error] 25#25: *2 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 172.25.0.1, server: 127.0.0.1, request: "GET /favicon.ico HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.14/lab"
  3. 2023/11/02 11:19:37 [error] 24#24: *3 open() "/usr/share/nginx/html/lab" failed (2: No such file or directory), client: 172.25.0.1, server: 127.0.0.1, request: "GET /lab HTTP/1.1", host: "196.172.12.14", referrer: "http://196.172.12.144/jupyter"


如果你能帮我

gstyhher

gstyhher1#

  1. upstream backend {
  2. server jupyterlab:8888;
  3. }

字符串
应该可以解决这个问题。在docker-compose中,服务可以使用服务名来命名。

bweufnob

bweufnob2#

无论如何我关闭这个问题,现在我有一个不同的问题,而不是写在这个主题。
这个问题是在我的nginx conf中,斜杠放错了位置,路径也没有完全拼出来。正如@Andromeda所说,我需要在我的upstream中使用服务名称。在位置中,我必须使用更详细的斜杠路径。

  1. upstream jupyter {
  2. server jupyterlab:8888;
  3. }
  4. server {
  5. listen nginx:80;
  6. server_name 127.0.0.1 www.127.0.0.1 ;
  7. location /jupyter/ {
  8. proxy_pass http://jupyter/lab/;
  9. }
  10. location /ping {
  11. default_type application/json;
  12. return 200 '{"status": "All good"}';
  13. }
  14. }

字符串

展开查看全部

相关问题