我试图将nginx用作Docker容器中部署的几个Web应用程序的反向代理。我只能从docker服务器公开端口80,并希望允许访问造船厂和rabbitMQ管理Web应用程序。
理想情况下,用户可以通过以下方式访问服务: HTTP [:] // 10.10.10.1/shipyard/ HTTP [:] // 10.10.10.1/rabbitmq /
经过相当多的研究,试验和错误,这是我的nginx配置:
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;
}
}
当我访问任一路径的应用程序时,我遇到了几个问题,我认为这些问题可能相关:
造船厂: 试图从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(不允许)。起初我认为///是问题,这就是rabbitMQ管理应用程序的工作方式。