Я хотел бы обслуживать веб-узел за местом на моем веб-сервере. Например, если мой домен http://mydomain
Я хочу, чтобы мой веб-сокет был доступен по адресу ws://mydomain/ws
.
Я использую локальный сервер websocket на порту 8080, и я могу подключиться к нему, используя как localhost, так и IP-адрес локальной сети (192.168.1.100). Когда я пытаюсь получить доступ к веб-сокету по этому пути, я получаю Error: Unexpected server response (404)
.
Вот моя попытка сделать это в nginx:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server 127.0.0.1:8080;
}
server {
listen 80;
listen [::]:80;
access_log /var/log/nginx/mydomain.access.log;
error_log /var/log/nginx/mydomain.error.log;
server_name mydomain;
location / {
alias /var/www/mydomain/htdocs;
index index.html;
try_files $uri $uri/ =404;
}
location /ws/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://websocket;
}
}
Я нашел несколько предыдущих вопросов в Интернете, но, похоже, ни один из них не решает эту проблему; Я даже не уверен, возможен ли такой тип прокси.
Изначально у меня был протокол веб-сокета, определенный «чат», и я получал Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received
ошибка; удаление исправляет это на данный момент.
Мой сервер websocket использует локально созданный NetCoreServer от https://github.com/chronoxor/NetCoreServer и почти идентичен имеющемуся у них примеру небезопасного сервера websocket. Сообщите мне, если я могу предоставить дополнительную информацию, которая поможет решить эту проблему.