Tengo un servicio (registro de Docker) que se ejecuta port 5000
, he instalado nginx para redirigir la solicitud HTTP de 8080
a 5000
. Si hago un rizo localhost:5000
, funciona, pero cuando hago un rizo localhost:8080
, obtengo un error de puerta de enlace incorrecta.
archivo de configuración nginx:
upstream docker-registry {
server localhost:5000;
}
server {
listen 8080;
server_name registry.mydomain.com;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 0;
chunked_transfer_encoding on;
location / {
proxy_pass http://docker-registry;
}
location /_ping {
auth_basic off;
proxy_pass http://docker-registry;
}
location /v1/_ping {
auth_basic off;
proxy_pass http://docker-registry;
}
}
En /var/log/nginx/error.log
tengo:
[crit] 15595#0: *1 connect() to [::1]:5000 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: registry.mydomain.com, request: "GET / HTTP/1.1", upstream: "http://[::1]:5000/", host: "localhost:8080"
¿Alguna idea?
Respuestas:
Supongo que es una caja de Linux, por lo que lo más probable es que SELinux esté impidiendo la conexión ya que no hay una política que lo permita.
Deberías poder correr
# setsebool -P httpd_can_network_connect true
y luego reinicie nginx.
fuente
Según el mensaje de error, me hace preguntarme si localhost: 5000 se está resolviendo como una dirección ipv6, lo que es posible que no desee. Podrías intentar cambiar eso a 127.0.0.1:5000
EDITAR: en su línea proxy_pass, ¿es posible que le falte parte de la URL? Intente agregar $ request_uri para que pueda ser:
o probablemente:
No estoy seguro de cuál es el más correcto.
Otra cosa a tener en cuenta. Su configuración indica:
Entonces, localhost: 8080 puede no coincidir. Para las pruebas, puede cambiar esto a:
Luego, se emparejaría el localhost: 8080, así como su dominio. Supongo que Registry.mydomain.com es solo un ejemplo y pondría su FQDN del servidor real allí.
fuente
127.0.0.1:5000
y lo intenté soloserver_name localhost
yserver_name registry.mydomain.com
(intentando desde otro servidor en el mismo lan con nombreregistry.mydomain.com
de host en / etc / hosts), y ambos, pero nada ... mismo error[crit] 16839#0: *5 connect() to 127.0.0.1:5000 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: registry.mydomain,com request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5000/", host: "localhost:8080"
, con localhost:[crit] 16839#0: *5 connect() to 127.0.0.1:5000 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5000/", host: "localhost:8080"