Назад | Перейти на главную страницу

В соединении отказано при запуске rhodecode через nginx

Вместо того, чтобы видеть страницу родекода при посещении repo.xxx.com, я получаю 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;
        }

}

Я также изменил свойство хоста в моем ini-файле rhodecode на host=0.0.0.0. Все это делается на сервере ubuntu 12.04 LTS, размещенном на linode (если это имеет значение).

Большая часть того, что я читал, предполагает, что это проблема «разрешений», когда порты не открываются правильно или каким-то образом мои интерфейсы обратной связи не настроены правильно.

Вот результат 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

Как оказалось, я огромный инструмент, который не может следовать инструкциям..

У меня не было правильной настройки родекода, я не запускал paster setup-rhodecode production.ini, где production.ini - файл конфигурации для родекода.

Итак, урок здесь в том, что если вы получаете ошибку отказа в соединении, страницу отображения 502, и вы запускаете netstat, и вы не видите порт, который вы ищете (5000 в моем случае), то ваше приложение, вероятно, дает сбой, и вам следует возможно, проверьте журнал ошибок вашего приложения, а не обвиняйте схему разрешений ubuntu.

Проблема здесь:

upstream rhodecode{
        server 0.0.0.0:5000;
}

Вы не указали действительный адрес для подключения nginx; 0.0.0.0 не является допустимым IP-адресом назначения.

Чтобы решить проблему, укажите фактический IP-адрес, например 127.0.0.1.