我试图使用nginx作为Docker容器中部署的几个Web应用程序的反向代理。 我只能从docker服务器公开端口80,并且想要允许访问shipyard和rabbitMQpipe理web应用程序。
理想情况下,用户可以通过以下方式访问服务:http [:] // 10.10.10.1/shipyard/ http [:] // 10.10.10.1/rabbitmq/
经过相当多的研究,试验和错误,这是我的nginxconfiguration:
upstream rabbitmq { server 127.0.0.1:8888; } upstream shipyard { server 127.0.0.1:8080; } server { listen 80; server_name 10.10.10.1; location /rabbitmq/ { proxy_http_version 1.1; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_pass http://rabbitmq/; proxy_redirect default; } location /shipyard/ { proxy_http_version 1.1; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_pass http://shipyard/; proxy_redirect default; } }
当我访问这两个应用程序的path时遇到了一些问题,我相信这些问题可能与此有关:
造船厂:尝试从http [:] // 10.10.10.1/api/containers加载文件,当它应该是http [:] // 10.10.10.1/shipyard/api/containers
rabbitmq:一切似乎工作,直到服务器尝试进行一个宁静的电话:+++ PUT:http [:] // 10.10.10.1/rabbitmq/api/queues///test2服务器响应405(不允许) 。 起初我以为///是问题,这是rabbitMQpipe理应用程序的工作原理。