Mam usługę (rejestr dokera), która działa port 5000
, zainstalowałem nginx, aby przekierować żądanie HTTP od 8080
do 5000
. Jeśli zrobię zwijanie, localhost:5000
to zadziała, ale kiedy zrobię zwijanie localhost:8080
, pojawia się błąd Bad gateway .
Plik konfiguracyjny 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;
}
}
W /var/log/nginx/error.log
mam:
[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"
Dowolny pomysł?
Odpowiedzi:
Zakładam, że jest to Linux, więc najprawdopodobniej SELinux uniemożliwia połączenie, ponieważ nie ma polityki zezwalającej na połączenie.
Powinieneś być w stanie po prostu biec
# setsebool -P httpd_can_network_connect true
a następnie uruchom ponownie nginx.
źródło
Na podstawie komunikatu o błędzie zastanawiam się, czy localhost: 5000 jest rozpoznawany jako adres IPv6, czego możesz nie chcieć. Możesz spróbować zmienić to na 127.0.0.1:5000
EDYCJA: W linii proxy_pass możliwe, że brakuje części URL? Spróbuj dodać $ request_uri, aby mogło to być:
lub prawdopodobnie:
Nie jestem pewien, który z nich jest najbardziej poprawny.
Kolejna rzecz do rozważenia. Twoja konfiguracja wskazuje:
Zatem localhost: 8080 może nie być dopasowany. Do testowania możesz zmienić to na:
Wtedy dopasowany byłby localhost: 8080, podobnie jak twoja domena. Zakładam, że register.mydomain.com jest tylko przykładem i umieściłbyś tam swoją prawdziwą nazwę FQDN serwera.
źródło
127.0.0.1:5000
i próbowałem tylko z (server_name localhost
iserver_name registry.mydomain.com
próbuję z innego serwera w tej samej sieci z nazwą hostaregistry.mydomain.com
w / etc / hosts), i oba, ale nic ... ten sam błąd[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"
[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"