我不确定我的术语是否正确,所以让我解释一下......
如果我有一个域,test.example.com
我希望能够映射/abc
到该服务器上运行在端口上的应用程序,8080
并将另一个应用程序映射/def
到运行在端口上的应用程序8081
。
我已经用 RabbitMQ 尝试过它,我在15672
docker 内运行并公开 port ,但 NGINX 不在 Docker 内并直接在机器上运行。
docker run -d --hostname rabbitmq --name rabbitmq -p 15672:15672 rabbitmq:3-management
无论是在 Docker 内部运行还是直接在机器上运行,我相信都无关紧要,我有一个在端口上运行的应用程序15672
,我想映射到位置/rabbitmq
到目前为止我尝试过的 NGINX 配置:
server {
listen 80;
server_name test.example.com;
location /rabbitmq {
proxy_pass http://127.0.0.1:15672;
}
}
去的时候,test.example.com/rabbitmq
我看到以下内容:
我不知道那是 NGINX 的页面还是 RabbitMQ 的页面显示未找到。
在服务器上打开端口15672
我可以清楚地访问 RabbitMQ
去:15672/blah
它似乎是同一个未找到的页面,所以它一定是去 RabbitMQ。
RabbitMQ 正在侦听0.0.0.0:15672
,因此它应该可以从任何域、主机或 ip 工作。
那么我如何使test.example.com/rabbitmq
实际服务的内容test.example.com:15672
呢?
我使用重写使其工作:
这是我的 nginx 配置;我正在使用它以及反向代理,但对于我的节点应用程序。“location /SienaBikes”是 nodejs 应用程序,它对我来说可以正常工作。
我做的一件事(但我不知道它是否也适用于 rabbitmq)是安装PM2 Daemon并将我的节点应用程序作为进程运行。也许您也需要这样做或类似的事情。
您的 NGINX 配置很好,只需要像下面这样重写位置映射。