Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 将SSL(端口443)添加到Nginx反向代理服务器(端口80)-Nginx配置文件_Node.js_Ssl_Nginx_Reverse Proxy_Certbot - Fatal编程技术网

Node.js 将SSL(端口443)添加到Nginx反向代理服务器(端口80)-Nginx配置文件

Node.js 将SSL(端口443)添加到Nginx反向代理服务器(端口80)-Nginx配置文件,node.js,ssl,nginx,reverse-proxy,certbot,Node.js,Ssl,Nginx,Reverse Proxy,Certbot,使用Ubuntu,我使用Certbot生成了一个SSL。这自动更新了我的Nginx配置文件,并添加了一个额外的侦听端口。我关心的是我是否只需要监听一个端口80或443,而不是同时监听两个端口,但我无法找到是否需要删除端口80监听的相关信息。请参阅下面的我的配置文件: server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; server_name

使用Ubuntu,我使用Certbot生成了一个SSL。这自动更新了我的Nginx配置文件,并添加了一个额外的侦听端口。我关心的是我是否只需要监听一个端口80或443,而不是同时监听两个端口,但我无法找到是否需要删除端口80监听的相关信息。请参阅下面的我的配置文件:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    server_name _;

    location / {
        proxy_pass http://localhost:3001;
        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;
    }
}

server {
    root /var/www/html;

    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/my.domain.co.uk/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/my.domain.co.uk/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 = my.domain.co.uk) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80 ;
    listen [::]:80 ;
    server_name my.domain.co.uk;
    return 404; # managed by Certbot
}
既然Certbot已经将代码添加到一个单独的服务器块中,我是否需要删除我的初始服务器块在端口80侦听的位置?每当一台旧服务器被使用时,我都会遇到一夜之间崩溃的问题,我觉得这与Nginx配置文件类似


抱歉,如果这个问题很愚蠢,我不是很有经验,不幸的是,我发现它非常困难。感谢您提供的任何见解。

您没有确切说明您想要什么,例如,哪个应用程序应该在哪个端口上为请求提供服务,以及应该如何处理HTTP请求,但我假设

所有端口80请求都是HTTP,所有443请求都是HTTPS。 您希望将所有HTTP请求重定向到HTTPS 所有HTTPS请求都应传递给节点 如果是这样,这可能就是你真正想要的:

server {
    root /var/www/html;
    server_name my.domain.co.uk;

    location / {
        proxy_pass http://localhost:3001;
        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;
    }

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

    listen 80 ;
    listen [::]:80 ;
    server_name my.domain.co.uk;
    return 404; # managed by Certbot
}

第一个服务器块仅处理HTTPS请求,并将所有请求传递给节点。第二个服务器块只处理HTTP请求并将它们重定向到HTTPS。

非常感谢。我想这就是我想要的,恐怕我对这件事还不太熟悉。在过去,第二个服务器块中的443是否会导致服务器崩溃问题?我想知道我是否设置了太多重定向。这是错误-2018/11/14 08:46:19[错误]3252732527:*852连接失败111:连接到上游时拒绝连接,客户端:客户端ip,服务器:,请求:GET/HTTP/1.1,上游:http://server_ip:3001/,主机:server_ip:443我不是100%确定,但我认为HTTPS请求首先被传递到第二个块,因此它试图获取/但无法获取。因此,它被再次尝试,但在HTTP中,它进入了传递给节点应用程序的第一个块。我不确定它为什么在之后被拒绝,但可能是因为节点设置,例如不侦听http。