В настоящее время я настраиваю TeamCity за обратным прокси-сервером nginx, но в моем браузере появляется ошибка. Ошибка следующая:
WebSocket connection to 'ws://ci.example.net/app/subscriptions?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.2.7-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-atmo-protocol=true&browserLocationHost=http%3A%2F%2Fci.example.net' failed: Error during WebSocket handshake: Unexpected response code: 501
Я просмотрел журналы ошибок nginx и журналы ошибок TeamCity, оба из которых оказались пустыми.
Моя конфигурация nginx выглядит следующим образом:
server {
listen 80;
server_name ci.example.net;
error_log /var/log/nginx/error.log;
proxy_intercept_errors on;
error_page 401 403 404 /404.html;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8111;
proxy_read_timeout 90;
proxy_redirect http://127.0.0.1:8111 http://ci.fluxmc.net;
}
}
#Websocket configuration
map $http_upgrade $connection_upgrade {
default upgrade;
'' '';
}
server {
listen 400;
server_name ci.example.net;
error_log /var/log/nginx/error.log;
proxy_intercept_errors on;
location /tc {
proxy_pass http://localhost:8111/tc;
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;
}
}
Я действительно не уверен, куда идти дальше, я следил за документация для TeamCity почти точно. Если бы вы могли оказать какую-либо помощь, я был бы признателен!
Документация для TeamCity делает пара предположений которые не выдерживают вас:
Сервер TeamCity установлен по адресу: http: //teamcity.local: 8111 / tc
Внешнему миру он виден как URL: http: //teamcity.public: 400 / tc
В вашем случае TeamCity виден для внешнего мира как URL: http://ci.example.net.
Это изменит вашу конфигурацию NGINX следующим образом:
server {
listen 80;
server_name ci.example.net;
error_log /var/log/nginx/error.log;
proxy_intercept_errors on;
error_page 401 403 404 /404.html;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8111;
proxy_read_timeout 90;
proxy_redirect http://127.0.0.1:8111 http://ci.fluxmc.net;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
#Websocket configuration
map $http_upgrade $connection_upgrade {
default upgrade;
'' '';
}
Для меня этого было достаточно, чтобы соединение websocket с TeamCity работало.