无需更改 Web 应用程序的 Nginx 反向代理

无需更改 Web 应用程序的 Nginx 反向代理

我目前正在运行一个docker-compose应用程序,前面有一个nginx,访问3个独立的docker应用程序(flask api,angular,jupyter notebook)。

我目前已经在 localhost/api、localhost/dev 和 localhost/jupyter 中设置并运行。

我正在尝试做但遇到了问题的事情,即在不更改 angular 和 jupyter 应用程序的情况下进行代理传递重定向。为了使事情正常运转,我必须添加c.NotebookApp.base_url = '/jupyter'jupyter 图像并更改<base href="/dev/">angular 图像 html,但我宁愿不这样做。

有没有办法让 nginx 自动代理所有的连接信息,这样我就不用改变原来的应用程序了?

我当前尝试重定向 Jupyter 笔记本导致客户端从 的localhost/jupyterhtml/css 文件查找localhost/[something].js,因此发生错误,因为正确的文件位于localhost/jupyter/[something].js

这是我当前正在运行的 nginx.conf。

nginx.conf

http {
include /etc/nginx/mime.types;

server {

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;

    proxy_http_version 1.1;
    proxy_cache_bypass $http_upgrade;

    ## may need mal-json/ for final
    server_name localhost;
    listen 80;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }

    location /api/ {
        proxy_pass http://api:8000/;
    }

    location /dev/ {
        proxy_pass http://angular:4200/;
    }

    location /jupyter/ {
        proxy_pass http://jupyter:8888;
    }

    location ^~ /sockjs-node/ {
        proxy_pass http://angular:4200;
    }

}

如果我遗漏了任何信息,请告诉我。我主要想知道我所做的事情是否可行。我意识到 nginx 可以将主要请求重定向到正确的 URL,但我对以下请求(例如来自连接的 css/js)遇到了麻烦。

相关内容