代码之家  ›  专栏  ›  技术社区  ›  Alexis.Rolland user2915097

烧瓶restplus未装在nginx后面

  •  1
  • Alexis.Rolland user2915097  · 技术社区  · 7 年前

    我有一个烧瓶api和一个用烧瓶restplus生成的夸张ui。api运行在nginx容器后面的docker容器中,nginx容器通过http提供服务。

    以下是确认API正在运行的运行状况检查终结点: https://mobydq.net/mobydq/api/v1/health

    {"message":"MobyDQ API running in production mode"}
    

    但是,应该在以下url加载的swagger根本不加载: https://mobydq.net/mobydq/api/doc

    以下是nginx配置:

    http {
        upstream api  {
          server api:5434;
        }
    
        upstream app {
          server app:3000;
        }
    
        # Server for https
        server {
          listen       443 ssl http2;
          server_name  mobydq.net;
    
          ssl_certificate      /etc/letsencrypt/live/mobydq.net/fullchain.pem;
          ssl_certificate_key  /etc/letsencrypt/live/mobydq.net/privkey.pem;
    
          # Location for MobyDQ Flask API
          location /mobydq {
            limit_req zone=default burst=20;
            proxy_pass http://api;
            proxy_redirect   off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
          }
    
          # Location for MobyDQ Web App
          location / {
            limit_req zone=default burst=20;
            proxy_pass http://app;
            proxy_redirect   off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
          }
        }
    
        # Default server to redirect http requests to https
        server {
          listen 80 default_server;
          server_name mobydq.net;
          listen [::]:80 default_server;
    
            location ~ /.well-known {
                root /var/www/letsencrypt;
            }
            location / {
                return 301 https://$host$request_uri;
            }
        }
    }
    

    你知道为什么大摇大摆不装货吗?我查看了加载页面时发送的http请求,但没有太大帮助。我只能看到加载图标:

    enter image description here

    我也看了看控制台,发现了一个错误,但我不知道这是什么意思:

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  0
  •   Alexis.Rolland user2915097    7 年前

    问题是,当试图从Swagger(JSON配置文件中)获取资源时,NGIX没有正确地重定向HTTP请求。

    此问题已通过如下更改nginx配置得到解决:

    [...]
      # Location for MobyDQ Flask API
      location ~ ^/(mobydq|swaggerui) {
        limit_req zone=default burst=20;
        proxy_pass http://api;
        proxy_redirect   off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
      }
    [...]