NGINX proxy_pass 到 RabbitMQ 管理器只能通过移动设备工作
NGINX proxy_pass to RabbitMQ manager only works via mobile device
我的 NGINX/RabbitMQ 设置遇到了一个非常具体的问题,在该设置中,我只能通过移动设备访问所需的结果。我希望有人可以指出我做错了什么 :)。我有以下设置:
DigitalOcean 上的两个 droplet:
- 安装了 rancher 服务器的 Droplet A
- 作为宿主的Droplet B,由rancher控制。 对于这个例子,假设它的 ip 地址是 123.45.678.90
docker-hub 上的两张图片:
- myaccount/customnginx
- myaccount/customrabbitmq
myaccount/customnginx
Dockerfile:
FROM nginx:latest
COPY nginx.conf /etc/nginx/nginx.conf
nginx.conf(其中http://123.45.678.90:15672 = Droplet B + RabbitMQ 端口)
worker_processes 1;
events {
worker_connections 1024;
}
http {
log_format compression '$remote_addr - $remote_user [$time_local] '
'"$request" $status $upstream_addr '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
server {
listen 80 default_server;
server_name www.mydomain.nl mydomain.nl;
access_log /dev/stdout;
location /rabbitmq/ {
proxy_pass http://123.45.678.90:15672/;
rewrite ^/rabbitmq$ /rabbitmq/ permanent;
rewrite ^/rabbitmq/(.*)$ / break;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
myaccount/customrabbitmq
我可以根据要求提供rabbitMQ配置,但我认为目前不是很重要。
两个图像都通过以下 docker-compose.yml:
构建到 Rancher 上的堆栈中
version: '2'
services:
rabbitmq:
image: myaccount/customrabbitmq
ports:
- 5672:5672
- 15672:15672
nginx:
image: myaccount/customproxy
ports:
- 80:80
which looks like this
现在
当我尝试通过 www.mydomain.nl/rabbitmq 在移动设备上 访问我的 RabbitMQ 管理器时,一切正常。当我尝试对台式机(或笔记本电脑)上的任何浏览器执行相同操作时,没有任何效果。我什至没有看到在 Rancher(nginx 容器)上记录的尝试。我还在禁用 ad-block-plus/Disconnect 的隐身模式 and/or 中尝试了此操作,但无济于事。
这个配置有什么问题?
提前致谢。
好的,我想我设法解决了这个问题。以下一项或两项必须对其执行某些操作:
我在 DigitalOcean droplet 上启用了通过 ipv6 的连接,在 DNS 记录中添加了 ipv6 地址作为 AAAA 记录(对于 www.mydomain.nl 作为 mydomain.nl)域名注册商。我不太了解这个主题,但认为移动设备可能已连接到 ipv4,而台式机试图连接到另一个(设置不正确)。我进入了 firefox ocnfig( 在地址栏 中输入 about:config)并将 network.dns.disableIPv6 设置为 true。这似乎有所帮助。
我等了一天。也许 DNS(正常 A 记录)正确传播需要更长的时间
我的 NGINX/RabbitMQ 设置遇到了一个非常具体的问题,在该设置中,我只能通过移动设备访问所需的结果。我希望有人可以指出我做错了什么 :)。我有以下设置:
DigitalOcean 上的两个 droplet:
- 安装了 rancher 服务器的 Droplet A
- 作为宿主的Droplet B,由rancher控制。 对于这个例子,假设它的 ip 地址是 123.45.678.90
docker-hub 上的两张图片:
- myaccount/customnginx
- myaccount/customrabbitmq
myaccount/customnginx
Dockerfile:
FROM nginx:latest
COPY nginx.conf /etc/nginx/nginx.conf
nginx.conf(其中http://123.45.678.90:15672 = Droplet B + RabbitMQ 端口)
worker_processes 1;
events {
worker_connections 1024;
}
http {
log_format compression '$remote_addr - $remote_user [$time_local] '
'"$request" $status $upstream_addr '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
server {
listen 80 default_server;
server_name www.mydomain.nl mydomain.nl;
access_log /dev/stdout;
location /rabbitmq/ {
proxy_pass http://123.45.678.90:15672/;
rewrite ^/rabbitmq$ /rabbitmq/ permanent;
rewrite ^/rabbitmq/(.*)$ / break;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
myaccount/customrabbitmq
我可以根据要求提供rabbitMQ配置,但我认为目前不是很重要。
两个图像都通过以下 docker-compose.yml:
构建到 Rancher 上的堆栈中version: '2'
services:
rabbitmq:
image: myaccount/customrabbitmq
ports:
- 5672:5672
- 15672:15672
nginx:
image: myaccount/customproxy
ports:
- 80:80
which looks like this
现在
当我尝试通过 www.mydomain.nl/rabbitmq 在移动设备上 访问我的 RabbitMQ 管理器时,一切正常。当我尝试对台式机(或笔记本电脑)上的任何浏览器执行相同操作时,没有任何效果。我什至没有看到在 Rancher(nginx 容器)上记录的尝试。我还在禁用 ad-block-plus/Disconnect 的隐身模式 and/or 中尝试了此操作,但无济于事。
这个配置有什么问题?
提前致谢。
好的,我想我设法解决了这个问题。以下一项或两项必须对其执行某些操作:
我在 DigitalOcean droplet 上启用了通过 ipv6 的连接,在 DNS 记录中添加了 ipv6 地址作为 AAAA 记录(对于 www.mydomain.nl 作为 mydomain.nl)域名注册商。我不太了解这个主题,但认为移动设备可能已连接到 ipv4,而台式机试图连接到另一个(设置不正确)。我进入了 firefox ocnfig( 在地址栏 中输入 about:config)并将 network.dns.disableIPv6 设置为 true。这似乎有所帮助。
我等了一天。也许 DNS(正常 A 记录)正确传播需要更长的时间