我试图在一台机器上设置多个具有相同映像的docker容器,并将所有应用程序托pipe在由path分隔的同一个域中。 目的是将每个客户分离到自己的容器中。 即mydomain.com/bbb …等
我正在使用nginx作为反向代理,并在线上跟随各种示例。 我的nginxconfiguration如下所示:
server { listen ...; ... location / { proxy_pass http://127.0.0.1:8080; } location /aaa { proxy_pass http://127.0.0.1:8181; } location /bbb { proxy_pass http://127.0.0.1:8282; } ... }
我注意到,应用程序正在期待被托pipe在根目录/目前在404结束了。有没有一种聪明的方法来重写这些到自己的path基于请求的来源而不修改应用程序本身?
我知道,使用子域名可能更容易,但是我想避免在客户来去时添加和删除子域名。
简单回答是不。
你至less需要考虑三个方面来强迫应用程序远离根源。
proxy_pass或rewrite很容易 proxy_redirect很容易 最后一点是不容易的。 期望在根中生活的应用程序通常访问其相对于根的资源,这意味着它们在反向代理中碰到了错误的位置。
Apache有一个模块,可以重写HTML文档中embedded的URL,但是这对我来说似乎相当低效。
首选的解决scheme是更改应用程序以使其资源和超链接URL相对path或前缀相同的自定义path。
我正在尝试做相同的设置,所以我遇到了同样的问题。 在我看来,人们实际上不得不像Richard Smith所描述的那样改变后端应用程序。 对nginx使用不同的“外部”端口是一个解决方法,但它不是一个优雅的。