Сервер:
С помощью php библиотеки ratchet прослушиваю web socket на порт 8200
Код {
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8200
);
$server->run();
}
Запускаю этот php файл
Клиент:
В js подключаюсь к веб сокету
Код {
var ws = new WebSocket(`ws://localhost:8200`)
}
Локально всё работает.
И на сервере работает, но без ssl
Когда сделал это на сервере с ssl появилась ошибка на клиенте:
Mixed Content: The page at was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint. This request has been blocked; this endpoint must be available over WSS.
Написали в Тех. поддержку. Тех. поддержка добавила в файл .htaccess следующее:
Header always set Content-Security-Policy "upgrade-insecure-requests"
Но ситуацию это не исправило.
Просто на клиенте поменялась ошибка на:
WebSocket connection to 'ws://localhost:8200/' failed:
После гугла смогли составить более понятное предложение(Попросили сделать Тех. поддержку tls termination)
В конфигурационные файлы сервера были добавлены изменения:
Apache:
ProxyRequests off
ProxyPass /ws/ ws://localhost:8200/
ProxyPassReverse /ws/ ws://localhost:8200/
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule /ws/.* ws://localhost:8200%{REQUEST_URI} [P]
Nginx:
location /wss/ {
proxy_pass http://websocket_server;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
Это тоже не помогло
1432
Ответы (0)