Я хочу использовать nginx в качестве обратного прокси-сервера для соединений веб-сокетов.
Считайте echo.websocket.org моей серверной службой веб-сокетов.В качестве тестового клиента я использую wscat из https://github.com/websockets/wscat.
Что работает:
client <- ws -> backend : wscat --connect ws://echo.websocket.org
клиент <- wss -> : wscat --connect wss://echo.websocket.org
клиент <- ws -> прокси <- ws ->backend : wscat --connect ws://localhost
со следующей конфигурацией nginx:
events {
}
http {
server {
listen 80;
location / {
proxy_pass http://echo.websocket.org;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
}
}
client <- wss -> proxy <- ws -> backend : wscat -n --connect wss://localhost
со следующей конфигурацией nginx:
events {
}
http {
server {
listen 443 ssl;
ssl_certificate /pki/cert.pem;
ssl_certificate_key /pki/key.pem;
location / {
proxy_pass http://echo.websocket.org;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
}
}
Что мне нужно и что мне нужно, так это настройка nginx для использования безопасных веб-сокетов для подключения к бэкэнду.Мне нужна эта конфигурация:
client <- wss -> proxy <- wss -> backend
Я попытался изменить http://echo.websocket.org наhttps://echo.websocket.org без успеха.Это приводит к тайм-ауту шлюза 504.