TeamCity: reverse proxy через NGINX на порт 80 и Some users cannot use optimized web UI updates via WebSocket protocol.

Автор: | 04/04/2015
 

teamcity_logoВместо того, что бы ходить к TeamCity по адресу вида http://teamcity.domain.local:8111 – можно добавить NGINX, который будет проксировать запросы с порта 80 на порт 8111 TeamCity.

Предполагается, что TeamCity уже установлен и настроен. Тут речь только о NGINX.

В отличии от настройки для Bamboo – тут требуются дополнительные параметры для NGINX.

Без этих параметров – TeamCity будет сообщать:

Some users cannot use optimized web UI updates via WebSocket protocol.
The following addresses were used by the affected sessions:
http://teamcity.domain.org.ua
Most probably there is not appropriately configured proxy server between the client browsers and the TeamCity server.

Создаём файл настроек, например – /etc/nginx/conf.d/teamcity.domain.org.ua.conf с таким содержимым:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''   '';
}

server {
    server_name teamcity.domain.org.ua;
    listen 80;
    access_log /var/log/nginx/teamcity.domain.org.ua.log combined;

    location / {
        proxy_pass          http://127.0.0.1:8111;
        proxy_http_version  1.1;
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    Host $server_name:$server_port;
        proxy_set_header    Upgrade $http_upgrade;
        proxy_set_header    Connection $connection_upgrade;
    }
}

Проверяем:

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапускаем:

# service nginx restart
Restarting nginx: nginx.

Готово.