同一域上的HTTPS和Websocket API端点

时间:2018-06-17 18:40:52

标签: express nginx websocket

我已经使用Nginx建立了一个域,并在后台运行Express / Node。

该域名主要服务于HTTPS流量,但我想提供一些WSS流量。

在我的Express应用程序中,我为每个新端点设置了路由,但无法想到如何在Nginx中设置这些路由。我是否需要为每条路由创建一个服务器块,或者我可以做些什么来最小化对配置的更改?

到目前为止,我在Nginx中有这个:

server {

    listen 443 ssl;

    root /sites/api.domain.tld/app;
    index app.js;

    server_name api.domain.tld;

    location / {

            proxy_pass http://127.0.0.1:5000;

    }

    gzip on;

    access_log /sites/api.domain.tld/logs/access.log combined;
    error_log /sites/api.domain.tld/logs/error.log error;

    ssl_certificate /etc/letsencrypt/live/api.domain.tld/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.domain.tld/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

}


server {

    listen 80;

    server_name api.domain.tld;

    if ($host =api.domain.tld) {
            return 301 https://$host$request_uri;
    }

    return 404;

}

我知道我需要添加Websocket升级配置:

proxy_pass http://127.0.0.1:5020;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;

不确定最好的方法是什么?

提前致谢。

0 个答案:

没有答案