第一次使用Nginx.
我有一个nodejs WebSocket服务器监听ws:// service_name:3600.
我正在使用docker-compose:
version: "2"
services:
# stuff
service_name:
image: imagename
ports:
- 3600:3600
links:
# stuff
- proxy
proxy:
image: image-from-Nginx-with-custom-config
ports:
- 80:80
- 443:443
- 8443:8443
我的配置:
// stuff
server {
listen 8443;
server_name localhost;
ssl on;
ssl_certificate /etc/Nginx/certs/crt.pem;
ssl_certificate_key /etc/Nginx/certs/key.pem;
keepalive_timeout 60;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
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 https;
location / {
proxy_pass ws://service_name:3600;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
我在启动时获得了/etc/Nginx/conf.d/default.conf中的Nginx:[emerg]无效的URL前缀.
所以Nginx不承认ws,我该怎么办?
解决方法:
在Nginx中,你仍然需要在你的网址中使用http作为协议而不是ws.
proxy_pass http://service_name:3600;
浏览器需要ws和wss协议,在下面添加的服务器端通过http处理websockets
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。