如何将Nginx反向代理配置为在多个端口上使用相同的SSL证书

时间:2020-10-26 23:31:50

标签: ssl nginx lets-encrypt

我在example.com上运行了一个静态前端页面,并在example.com上运行了一个NodeJS API:5000 / api /都可以与Nginx反向代理正常工作,但是当我安装SSL证书时,我发现该API确实可以不接受HTTPS请求。

如何配置API以接受HTTPS请求?

这是我的服务器块

server {

        root /var/www/html/dist;
        index index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;
        error_page 497 301 =307 https://$host:$server_port$request_uri;

        location /api/{
            proxy_pass http://example.com:5000;
            proxy_redirect off;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Ssl on;
        }

        location / {
                try_files $uri $uri/ =404;
        }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.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 = www.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80;
        listen [::]:80;

        server_name example.com www.example.com;
    return 404; # managed by Certbot




}

0 个答案:

没有答案