代理(nginx)显示网关错误


18

我有运行的服务(docker注册表),port 5000已经安装了nginx来将http请求从重定向80805000。如果我进行卷曲,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"

任何想法?


以我为例,我正在使用的代理服务在我使用它的过程中死了(并且我没有意识到)。一秒钟我正在访问它,下一秒钟我访问了错误的网关。我不得不重新启动服务。
迈克尔·普劳兹

Answers:


57

我假设它是一个Linux机器,所以很可能SELinux会阻止连接,因为没有允许连接的策略。

你应该可以跑步

# setsebool -P httpd_can_network_connect true

然后重新启动nginx。


Selinux被禁用,服务防火墙也被禁用
hellb0y77 15-4-27

2
即使您没有解决hellb0y77的问题,您也只是解决了我的问题。SE_LINUX再次罢工!
Wesley Burr

1
这对我也有用。有人对它的实际操作有任何进一步的信息吗?我讨厌不知道!
martinedwards

经过支持并在centOs 7上工作,请问这可能带来哪些安全问题。我通常会运行一组允许本地流量的iptables规则。想知道这会产生什么影响。
edencorbin

1
@edencorbin它允许httpd模块能够连接到网络。
沃伦

5

基于错误消息,这使我想知道是否将localhost:5000解析为ipv6地址,而这可能是您不想要的。您可以尝试将其更改为127.0.0.1:5000

编辑:在您的proxy_pass行中,可能您缺少URL的一部分吗?尝试添加$ request_uri,这样可能是:

proxy_pass http://docker-registry/$request_uri;

或者可能是:

proxy_pass http://docker-registry$request_uri;

不知道哪一个是最正确的。

另一件事要考虑。您的配置指示:

server_name registry.mydomain.com;

因此,localhost:8080可能不匹配。为了进行测试,您可以将其更改为:

server_name registry.mydomain.com localhost;

然后将匹配localhost:8080以及您的域。我假设Registry.mydomain.com只是一个示例,您将在其中放置真实服务器FQDN。


不起作用,设置127.0.0.1:5000并且我只尝试了server_name localhostserver_name registry.mydomain.com(从同一局域网中的另一台服务器尝试使用registry.mydomain.com/ etc / hosts中的主机名),并且两者都
尝试

惠特registry.mydomain.com [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"
hellb0y77
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.