首页 > 解决方案 > 使用 Nginx 反向代理在位置正确安装 Flask 应用程序

问题描述

我有一个 Flask 应用程序,它在 Docker 容器内运行,应该在特定的 URL 下公开:myserver.com/mylocation. 我想使用另一个运行 Nginx 的容器作为反向代理来实现路由。我正在关注一个很棒的教程,它已经让我走得很远了。

我的 Nginx-config(相关部分)内容如下:

server {
    server_name myserver.com;

    location /mylocation {
        proxy_pass http://myapp:5000;
        proxy_set_header Host $host;
        rewrite ^/mylocation(.*)$ $1 break;
    }
}

我的 docker-compose.yml 内容如下:

version: '2'
  services:
    nginx:
      image: nginx:latest
      container_name: production_nginx
      volumes:
        - ./nginx.conf:/etc/nginx/nginx.conf
      ports:
        - 80:80
        - 443:443

    myapp:
      build: .
      image: app_image
      container_name: app_container
      expose:
        - "5000"

现在,当我运行它时,我成功地从 myserver.com/mylocation 获取了我的应用程序的 index.html,但是在没有位置部分(/mylocation) 的情况下,myserver.com 会触发后续请求(CSS、JS 等),并且所以 Nginx 不会将它们路由到容器并且它们 404。对 CSS、JS 等的引用都是相对的,它们不(也不应该)包含服务器名称和位置。

我怎样才能做到这一点?我是否在我的 NGinx 配置中遗漏了一些让应用知道它应该在 /mylocation 运行的东西?

标签: nginxflaskdocker-composereverse-proxy

解决方案


推荐阅读