通过 nginx 运行 rhodecode 时连接被拒绝

通过 nginx 运行 rhodecode 时连接被拒绝

当我访问 repo.xxx.com 时,我没有看到 rhodecode 页面,而是得到了 502(错误网关)。

这是 nginx error.log 条目。

2013/03/14 21:48:33 [error] 11207#0: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 11.111.111.11, server: repo.xxx.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5000/", host: "repo.xxx.com"

这是我的 nginx.conf 的相关部分。

upstream rhodecode{
        server 0.0.0.0:5000;
}

server {
        listen 80 default;
        server_name www.xxx.com;

        location / {
                root /opt/html;
                index index.html;
        }
}

server {
        listen 80;
        server_name repo.xxx.com;

        proxy_redirect              off;
        proxy_set_header            Host $host;
        proxy_set_header            X-Url-Scheme $scheme;
        proxy_set_header            X-Host $http_host;
        proxy_set_header            X-Real-IP $remote_addr;
        proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header            Proxy-host $proxy_host;
        client_max_body_size        400m;
        client_body_buffer_size     128k;
        proxy_buffering             off;
        proxy_connect_timeout       7200;
        proxy_send_timeout          7200;
        proxy_read_timeout          7200;
        proxy_buffers               8 32k;

        location / {
                try_files $uri @rhodecode;
        }

        location @rhodecode {
                proxy_pass http://rhodecode;
        }

}

我还将 rhodecode ini 文件中的主机属性更改为host=0.0.0.0。这一切都是在由 linode 托管的 ubuntu 12.04 LTS 服务器上完成的(如果这很重要)。

我读过的大部分内容都表明这是一个“权限”问题,端口未正确打开或我的环回接口配置不正确。

这是 的输出iptables -L -n

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

答案1

问题在于:

upstream rhodecode{
        server 0.0.0.0:5000;
}

您没有为 nginx 指定要连接的有效地址;0.0.0.0不是有效的目标 IP 地址。

要解决该问题,请指定实际的 IP 地址,例如127.0.0.1

答案2

事实证明,我是一个无法遵循教程的庞大工具

我没有正确设置 rhodecode,我没有运行paster setup-rhodecode production.ini,其中 production.ini 是 rhodecode 的配置文件。

所以这里的教训是如果你收到连接被拒绝错误,502 显示页面,并且你运行 netstat 但没有看到你正在寻找的端口(在我的情况下是 5000)那么你的应用程序可能正在崩溃,你应该检查你的应用程序的错误日志而不是责怪 ubuntu 的权限方案。

相关内容