我目前在一个nginx反向代理的背后设置了TeamCity,但在浏览器中出现错误。 错误如下:
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错误日志,两者都是空的。
我的nginxconfiguration如下:
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服务器安装在URL: http://teamcity.local:8111 / tc
它是外部世界可见的URL: http://teamcity.public:400 / tc
在你的情况下,TeamCity对于外部世界是可见的URL: http : //ci.example.net 。
这改变你的NGINXconfiguration如下:
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与websocket连接工作。