lo que necesito es
Client <--wss---> nginx <--wss--> server
Estoy haciendo un proxy wss, ya lo tengo funcionando en Apache pero quiero cambiar a nginx ahora aquí está la configuración de Apache:
<LocationMatch "/statistics">
ProxyPass wss://127.0.0.1:23456
ProxyAddHeaders Off
ProxyPreserveHost On
RequestHeader set Host %{HTTP_HOST}s
RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
</LocationMatch>
En nginx uso esta configuración/etc/nginx/nginx.conf
server {
listen 444 ssl;
listen [::]:444 ssl;
server_name domain.com www.domain.com;
root /usr/share/nginx/html;
ssl_certificate "/etc/letsencrypt/live/domain/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/domain/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
proxy_ssl_server_name on;
ssl_protocols TLSv1.2 TLSv1.3;
location /statistics {
proxy_pass https://127.0.0.1:23456;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_ssl_name $host;
proxy_ssl_session_reuse off;
proxy_ssl_certificate "/etc/letsencrypt/live/domain/fullchain.pem";
proxy_ssl_certificate_key "/etc/letsencrypt/live/domain/privkey.pem";
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
Mi sitio web se carga bien en Nginx sin ningún error de SSL, lo que no funciona es el websocket con wss, ¡el websocket con ws también funciona!
Lo uso wscat
para probar la conexión ejecutando:
wscat -c wss://kaveneger.ir:23456
Connected (press CTRL+C to quit)
>
Significa que mi punto final está bien (realmente no necesitaba esta prueba ya que funciona en Apache, pero de todos modos...)
Ahora aquí es cuando lo hago con nginx.
wscat -c wss://domain.com:444/statistics
error: Unexpected server response: 404
> %
Registros de Nginx
/var/log/nginx/access.log
123.123.123.123 - - [27/Feb/2023:21:53:15 +0000] "GET /statistics HTTP/1.1" 404 0 "-" "-" "-"
/var/log/nginx/error.log
2023/02/27 21:53:49 [crit] 70632#70632: *14 SSL_read() failed (SSL: error:0A000126:SSL routines::unexpected eof while reading) while keepalive, client: 123.123.123.123, server: 0.0.0.0:444
Mi sistema operativo es Rocky Linux 9 y versión nginx: nginx/1.20.1
Ya busqué mucho y probé todas las soluciones que encontré, ¡pero nada funcionó!
Actualizar
¡Funciona si lo uso location /
en lugar de location /statistics
!