如何解决nginx反向代理到一组dockerized应用程序
我有一台linux服务器,它在同一台机器上运行的docker容器中运行许多应用程序,每个应用程序都在其自己的端口上公开。 我希望能够通过以下方式设置Nginx代理
http://myserver.example.com/firstapp/...
http://myserver.example.com/secondapp/...
http://myserver.example.com/thirdapp/...
etc.
我已经设置了nginx proxy.conf
(请参见下文),以便在它获取网址http://myserver.example.com/firstapp/<path>
时将其重写为http://<firstapp container>:<port>/<path>
问题是,第一个URL返回的HTML当然包括指向不包含前缀/firstapp/
的文件的链接,所以我得到了例如:
http://myserver.example.com/css/myfile.css 404 Not Found
解决方案 nginx reverse proxy to a set of pages with an additional path in the URL based on http referer? 仅当我有一个应用程序(“ stormui”)时有效,但是当我在同一服务器上运行多个dockerized应用程序时不适用
我使用docker-compose.yml文件启动所有内容,如下所示
version: '3.2'
services:
proxy:
image: nginx:latest
container_name: proxy
depends_on:
- firstapp
- secondapp
- ...
volumes:
- type: bind
source: ./proxy.conf
target: /etc/nginx/nginx.conf
ports:
- 80:80
restart: always
firstapp:
image: srv_firstapp:
expose:
- "8000"
.
.
-
secondapp:
image: srv_firstapp:
expose:
- "8001"
.
.
.
Mi尝试编写nginx的proxy.conf文件包含以下内容:
.
.
.
server {
listen 80;
server_name myserver.example.com;
location /firstapp {
proxy_pass http://firstapp:8000;
rewrite ^/firstapp(.*)/firstapp$ $1 break;
}
location /secondapp {
.
.
.
}
}
.
.
.
是否只有通过配置nginx反向代理来解决此问题? (也就是说,无需更改我无权访问的各种dockerized应用的代码或配置)?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。