gpt4 book ai didi

node.js - nginx ws 无效的 URL 前缀

转载 作者:搜寻专家 更新时间:2023-10-31 23:03:24 24 4
gpt4 key购买 nike

第一次使用nginx
我有一个监听 ws://service_name:3600 的 nodejs WebSocket 服务器。
我正在使用 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";
}
}

我在启动时得到 nginx: [emerg] invalid URL prefix in/etc/nginx/conf.d/default.conf
所以 nginx 不识别 ws,我该怎么办?

最佳答案

在 nginx 中,您仍然需要在 url 中使用 http 作为协议(protocol),而不是 ws

proxy_pass http://service_name:3600;

浏览器需要 wswss 协议(protocol),在服务器端,您在下面添加以通过 http 处理 websockets

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

关于node.js - nginx ws 无效的 URL 前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46807388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com