У меня есть служба (реестр Docker), которая работает port 5000
, я установил nginx, чтобы перенаправить HTTP-запрос из 8080
в 5000
. Если я делаю завиток, localhost:5000
он работает, но когда я делаю завиток, localhost:8080
я получаю ошибку плохого шлюза .
Конфигурационный файл 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;
}
}
У /var/log/nginx/error.log
меня есть:
[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"
Любая идея?
Ответы:
Я предполагаю, что это коробка Linux, поэтому, скорее всего, SELinux предотвращает соединение, так как нет политики, разрешающей соединение.
Вы должны быть в состоянии просто бежать
# setsebool -P httpd_can_network_connect true
и затем перезапустите nginx.
источник
Основываясь на сообщении об ошибке, я задаюсь вопросом, разрешается ли localhost: 5000 как адрес ipv6, который вы, возможно, не хотите. Вы можете попробовать изменить это на 127.0.0.1:5000
РЕДАКТИРОВАТЬ: В вашей строке proxy_pass, возможно, вы пропустили часть URL? Попробуйте добавить $ request_uri, чтобы это могло быть:
или возможно:
Не уверен, какой из них наиболее правильный.
Еще одна вещь, чтобы рассмотреть. Ваша конфигурация указывает:
Итак, localhost: 8080 может не совпадать. Для тестирования вы можете изменить это на:
Тогда будет сопоставлено localhost: 8080, а также ваш домен. Я предполагаю, что registry.mydomain.com является лишь примером, и вы бы указали полное доменное имя вашего сервера.
источник
127.0.0.1:5000
и я попробовал толькоserver_name localhost
иserver_name registry.mydomain.com
(пытаясь с другого сервера в той же локальной сети с именем хостаregistry.mydomain.com
в / etc / hosts), и оба, но ничего ... та же ошибка[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"
, с 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"