Я установил приложение PHP на моем VPS-сервере, предоставленном Hostgator.Приложение также включает реализацию веб-сокета, использующую cboden/ratchet
для порта 8080
.Вот код для запуска сервера websocket.
require_once __DIR__ . '/vendor/autoload.php';
$server = Ratchet\Server\IoServer::factory(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new ChatSocket()
)
),
8080
);
$server->run();
Соединение websocket работает нормально при протоколе ws
, но протокол wss
выдает ошибку на стороне клиента.
WebSocket connection to 'wss://<domain>:8080' failed: WebSocket opening handshake timed out
На сервере VPS есть Apache и Nginx.И nginx проксирует запросы к apache.HTTP
, HTTPS
и WS
работают совершенно нормально, но для использования HTTPS
на стороне клиента необходимо настроить WSS
.Основной домен защищен с помощью SSL-сертификата Позволяет зашифровать.
Вот конфигурация nginx:
server {
listen <server-ip>:443 ssl http2;
server_name <domain-name>;
server_name <domain-name>;
server_name <domain-name>;
ssl_certificate /opt/psa/var/certificates/<file-name>;
ssl_certificate_key /opt/psa/var/certificates/<file-name>;
ssl_client_certificate /opt/psa/var/certificates/<file-name>;
client_max_body_size 128m;
root "/var/www/vhosts/<subdomain-dir>/public";
access_log "/var/www/vhosts/system/<subdomain-dir>/logs/proxy_access_ssl_log";
error_log "/var/www/vhosts/system/<subdomain-dir>/logs/proxy_error_log";
#extension letsencrypt begin
location /.well-known/acme-challenge/ {
root /var/www/vhosts/default/htdocs;
types { }
default_type text/plain;
satisfy any;
auth_basic off;
allow all;
location ~ ^/\.well-known/acme-challenge.*/\. {
deny all;
}
}
#extension letsencrypt end
location / {
proxy_pass https://<server-ip>:7081;
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-Accel-Internal /internal-nginx-static-location;
access_log off;
}
location /internal-nginx-static-location/ {
alias /var/www/vhosts/<subdomain-dir>/public/;
internal;
}
add_header X-Powered-By PleskLin;
}
server {
listen <server-ip>:80;
server_name <domain-name>;
server_name <domain-name>;
server_name <domain-name>;
client_max_body_size 128m;
return 301 https://$host$request_uri;
}
Подскажите, как настроить WSS
?