RabbitMQ-Verbindung über Nginx
Ich bin versucht, setup-rabbitmq es von extern erreichbar ist (nicht localhost) durch nginx.
nginx-rabbitmq.conf:
server {
listen 5672;
server_name x.x.x.x;
location /{
proxy_pass http://localhost:55672/;
}
}
rabbitmq.conf:
[
{rabbit,
[
{tcp_listeners, [{"127.0.0.1", 55672}]}
]
}
]
Standardmäßig guest-Benutzer kann nur die Interaktion von localhost, also brauchen wir einen anderen Benutzer mit den erforderlichen Berechtigungen, etwa so:
sudo rabbitmqctl add_user my_user my_password
sudo rabbitmqctl set_permissions my_user ".*" ".*" ".*"
Jedoch wenn ich versuche eine Verbindung zu rabbitmq durch pika ich bekomme ConnectionClosed Ausnahme
import pika
credentials = pika.credentials.PlainCredentials('my_username', 'my_password')
pika.BlockingConnection(
pika.ConnectionParameters(host=ip_address, port=55672, credentials=credentials)
)
--[wirft ConnectionClosed Ausnahme]--
Wenn ich die gleichen Parameter verwenden, aber ändern Sie den host auf "localhost" und port 5672 dann Verbinde ich ok:
pika.ConnectionParameters(host=ip_address, port=55672, credentials=credentials)
Habe ich geöffnet-port 5672 auf den AVP-web-Konsole, und die Kommunikation durch nginx ist passiert: nginx access.log-Datei zeigt
[30/Apr/2014:22:59:41 +0000] "AMQP\x00\x00\x09\x01" 400 172 "-" "-" "-"
Was zeigt einen 400-Statuscode der Antwort (bad request).
So aussieht, schlägt die Anforderung fehl, wenn man durch nginx, funktioniert aber, wenn wir verlangen, rabbitmq direkt.
Hat sonst noch jemand ähnliche Probleme/habe rabbitmq zu arbeiten für externe Nutzer, die über nginx? Gibt es eine log-Datei rabbitmq, wo ich sehen kann, jede Anfrage und helfen weiter bei Problemen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Sie konfiguriert haben, nginx als HTTP-reverse-proxy, jedoch rabbitmq ist so konfiguriert, verwenden Sie das AMQP-Protokoll (siehe Beschreibung der tcp_listeners bei https://www.rabbitmq.com/configure.html)
Um nginx zu tun, etwas sinnvolles, müssen Sie neu konfigurieren, rabbitmq, um die Verwendung der HTTP - beispielsweise http://www.rabbitmq.com/web-stomp.html.
Natürlich kann das auch eine Signalwirkung, weil alle clients, die Zugriff auf rabbitmq über AMQP muss neu konfiguriert werden/überarbeitet für die Verwendung von HTTP.
Können Sie versuchen und proxy auf tcp, Installation eines tcp-proxy-Modul für nginx arbeiten mit AMQP.
https://github.com/yaoweibin/nginx_tcp_proxy_module
Give it a go.
Da nginx 1.9 es gibt stream-Modul für die tcp-oder udp (nicht mit kompiliert standardmäßig).
Konfiguriert habe nginx (1.13.3) mit ssl-stream
https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-tcp/
sites-enabled
Abschnitt? (Da normalerweise diese Dateien sind in derhttp {...}
block der config, nicht erlaubenstream {...}
?Nginx war ursprünglich nur ein HTTP-server, ich schlage auch vor, sich diesen oben genannten tcp-proxy-Modul, aber wenn Sie möchte haben bewiesen, load-balancer, die Allgemeine TCP-reverse-proxy (nicht nur HTTP, sondern behandeln kann jedes Protokoll in der Regel), sollten Sie erwägen, die Verwendung von HAproxy.