通过HTTPS和Nginx进行RabbitMQ管理 [英] RabbitMQ Management Over HTTPS and Nginx
问题描述
我正在尝试使用nginx通过HTTPS/SSL访问RabbitMQ接口,但无法弄清丢失的内容.
I'm trying to access the RabbitMQ interface over HTTPS/SSL with nginx, and I can't figure out what I'm missing.
这是我的Rabbitmq.conf文件:
Here's my rabbitmq.conf file:
[
{ssl, [{versions, ['tlsv1.2', 'tlsv1.1']}]},
{rabbit, [
{reverse_dns_lookups, true},
{hipe_compile, true},
{tcp_listeners, [5672]},
{ssl_listeners, [5671]},
{ssl_options, [
{cacertfile, "/etc/ssl/certs/CA.pem"},
{certfile, "/etc/nginx/ssl/my_domain.crt"},
{keyfile, "/etc/nginx/ssl/my_domain.key"},
{versions, ['tlsv1.2', 'tlsv1.1']}
]}
]
},
{rabbitmq_management, [
{listener, [
{port, 15671},
{ssl, true},
{ssl_opts, [
{cacertfile, "/etc/ssl/certs/CA.pem"},
{certfile, "/etc/nginx/ssl/my_domain.crt"},
{keyfile, "/etc/nginx/ssl/my_domain.key"},
{versions, ['tlsv1.2', 'tlsv1.1']}
]}
]}
]}
].
重新启动rabbitmq-server一切正常
All works ok when I restart rabbitmq-server
我的nginx文件如下:
My nginx file looks like this:
location /rabbitmq/ {
if ($request_uri ~* "/rabbitmq/(.*)") {
proxy_pass https://example.com:15671/$1;
}
}
现在,我猜测ngnix配置中有些内容无法解析HTTPS URL,因为尝试浏览时出现504个超时错误:
Now, I'm guessing there's something with the ngnix config not being able to resolve the HTTPS URL, as I'm getting 504 timeout errors when trying to browse:
https://example.com/rabbitmq/
很显然,这不是正确的FQDN,但是如果没有/rabbitmq/
有人能够通过FQDN和HTTPS在外部连接上使用RabbitMQ Management Web界面吗?
Has anyone been able to use the RabbitMQ Management web interface on an external connection over a FQDN and HTTPS?
我是否需要在专门用于15671端口的Nginx配置中创建一个新的服务器"块?
Do I need to create a new "server" block in nginx config dedicated to the 15671 port?
任何帮助将不胜感激!
推荐答案
我最终返回到默认的Rabbitmq.config文件,然后根据另一个我无法获得的stackoverflow答案,将我的nginx config块修改为以下内容立即找到.
I ended up reverting back to the default rabbitmq.config file, then modified my nginx config block to the below, based on another stackoverflow answer that I can't find right now.
location ~* /rabbitmq/api/(.*?)/(.*) {
proxy_pass http://127.0.0.1:15672/api/$1/%2F/$2?$query_string;
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;
}
location ~* /rabbitmq/(.*) {
rewrite ^/rabbitmq/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:15672;
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;
}
此外,我在浏览器中缓存了JS文件,这导致了问题并已将其禁用.
Also, I had browser caching for JS files, which was causing issues and have disabled that.
我将尝试逐段重新启用SSL,但示例网址目前仍在起作用:
I will try to re-enable SSL piece-by-piece but do have the example URL working for now:
https://example.com/rabbitmq/
这篇关于通过HTTPS和Nginx进行RabbitMQ管理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!