Monday, May 19, 2025

ทำให้ subdomain ที่ใช้ ssl จาก certbot สามารถใช้ socket io ได้ ใน nginx

 หลังจากที่สร้าง subdomain  และทำ ssl โดยใช้ certbot แล้วจะได้ script หน้าตาประมาณนี้

server {

    server_name socketio.dent.infovaley.com;

    location / {

        proxy_set_header X-Forwarded-Proto https;

        proxy_pass http://localhost:8822;

    }


    listen [::]:443 ssl; # managed by Certbot

    listen 443 ssl; # managed by Certbot

    ssl_certificate /etc/letsencrypt/live/socketio.dent.infovaley.com/fullchain.pem; # managed by Certbot

    ssl_certificate_key /etc/letsencrypt/live/socketio.dent.infovaley.com/privkey.pem; # managed by Certbot

    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}



server {

    if ($host = socketio.dent.infovaley.com) {

        return 301 https://$host$request_uri;

    } # managed by Certbot



    listen 80;

    listen [::]:80;

    server_name socketio.dent.infovaley.com;

    return 404; # managed by Certbot


}


ให้ทำการแก้ไข location เป็น 


location / {

        # Pass headers required for WebSocket support

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "Upgrade";

        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-Forwarded-Proto $scheme;


        # Pass the request to the Socket.io server on localhost:8822 (change 8822 to your port)

        proxy_pass http://localhost:8822;


        # Ensure the WebSocket connection uses HTTP 1.1 and does not timeout prematurely

        proxy_http_version 1.1;

        proxy_read_timeout 86400s;

        proxy_send_timeout 86400s;

    }

No comments:

Post a Comment