Py学习  »  NGINX

向nginx反向代理服务器(端口80)添加ssl(端口443)-nginx配置文件

Matt • 5 年前 • 843 次点击  

使用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配置文件相关,类似于此。

对不起,如果这个问题是愚蠢的,我不是很有经验,并发现它非常困难,不幸的是。谢谢你的洞察。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30489
 
843 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Orphamiel
Reply   •   1 楼
Orphamiel    5 年前

您没有确切地包括您想要的内容(例如,哪个应用程序应该为请求提供服务,哪些端口以及应该对HTTP请求做什么),但我假定

  1. 所有端口80请求都是HTTP,所有443请求都是HTTPS。
  2. 您希望将所有HTTP请求重定向到HTTPS
  3. 所有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。