TeamCity, nginx, и Websockets - ошибка 501

В настоящее время я настраиваю 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 . Если бы вы могли помочь, я был бы признателен!

4
задан 16 April 2016 в 09:55
1 ответ

Документация по TeamCity делает пару предположений , которые не верны для вас:

Сервер TeamCity установлен по URL: 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;
    ''   '';
}

Для меня этого было достаточно, чтобы соединение через веб-узел с TeamCity заработало.

1
ответ дан 3 December 2019 в 04:09

Теги

Похожие вопросы