Eu tenho um serviço (registro do docker) que é executado port 5000
, instalei o nginx para redirecionar a solicitação http de 8080
para 5000
. Se eu fizer uma curvatura, localhost:5000
ele funciona, mas quando faço uma curvatura localhost:8080
, recebo um erro de gateway inválido .
arquivo de configuração 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;
}
}
Em /var/log/nginx/error.log
eu tenho:
[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"
Qualquer ideia?
Respostas:
Presumo que seja uma caixa do Linux, então provavelmente o SELinux está impedindo a conexão, pois não há política que permita a conexão.
Você deve ser capaz de executar
# setsebool -P httpd_can_network_connect true
e, em seguida, reinicie o nginx.
fonte
Com base na mensagem de erro, me faz pensar se localhost: 5000 está sendo resolvido como um endereço IPv6, o que você pode não querer. Você pode tentar mudar isso para 127.0.0.1:5000
EDIT: Na sua linha proxy_pass, é possível que você esteja perdendo parte do URL? Tente adicionar $ request_uri para que possa ser:
ou provavelmente:
Não tenho certeza qual é o mais correto.
Outra coisa a considerar. Sua configuração indica:
Portanto, localhost: 8080 pode não corresponder. Para testar, você pode alterar isso para:
Em seguida, o localhost: 8080 seria correspondido, bem como o seu domínio. Presumo que registry.mydomain.com é apenas um exemplo e você colocaria o FQDN do servidor real lá.
fonte
127.0.0.1:5000
e eu tentei com apenasserver_name localhost
eserver_name registry.mydomain.com
(tentar de outro servidor na mesma lan com hostnameregistry.mydomain.com
em / etc / hosts), e ambos, mas nada ... mesmo erro[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"
, com 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"