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