es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Nginx devuelve un código de respuesta 400 en la solicitud de /socket.io.

Flask socket.io no funciona en el sitio web en vivo que utiliza gunicorn y nginx. El código funciona perfectamente con gunicorn en la máquina del host.

Configuración de Nginx a continuación:

servidor {

escuchar 80;
escuchar 443 ssl;
nombre_servidor nombre_dominio;
ssl_certificate /home/azureuser/code/proj/cert.pem;
ssl_certificate_key /home/azureuser/code/proj/key.pem;

ubicación = /favicon.ico { acceso_registro off; log_not_found off; }
ubicación /static/ {
    raíz /home/azureuser/code/proj;
}

ubicación / {
    incluir parámetros del proxy;
    proxy_pass http://unix:/run/gunicorn.sock;
}

ubicación /socket.io {
    incluir parámetros del proxy;
    proxy_http_version 1.1;
    proxy_buffering off;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_pass http://127.0.0.1:443/socket.io;
}

}

El navegador arroja un error 400 para las solicitudes /socket.io. ¿Alguna sugerencia?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la configuración de nginx es incorrecta y está causando el error 400 para las solicitudes /socket.io. Aquí hay algunas sugerencias para solucionar y resolver el problema:

    1. Verifique la configuración de flask-socketio y asegúrese de que esté configurado correctamente y escuchando en el puerto correcto.
    2. Verifique que el server_name en la configuración de nginx coincide con el nombre de dominio del sitio web en vivo.
    3. Asegúrese de que los archivos de certificado y clave SSL sean válidos y se hagan referencia correctamente en la configuración de nginx.
    4. Verifique si la directiva proxy_pass apunta al servidor upstream correcto, en este caso, el servidor gunicorn.
    5. Intente eliminar el prefijo “/socket.io” de la URL proxy_pass en el bloque location /socket.io, ya que puede no ser necesario.
    6. Verifique los registros de errores de nginx en busca de pistas sobre lo que podría estar causando el problema.
    7. Pruebe a comentar las directivas proxy_params y proxy_set_header en el bloque location /socket.io para ver si están causando algún conflicto.
    8. Considere utilizar una herramienta como ‘socket.io-client’ para probar la conexión al servidor directamente y ver si es un problema de backend o frontend.

    Siguiendo estos pasos, debería ser capaz de solucionar y arreglar el problema con Flask SocketIO que no funciona en un sitio web en vivo utilizando gunicorn y nginx.

Comments are closed.