我目前正在运行一个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/jupyter
html/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)遇到了麻烦。