Nginx 作为反向代理和 LetsEncrypt

Nginx 作为反向代理和 LetsEncrypt

尽管网络上有大量关于此问题的文章,但我仍然无法让它发挥作用。

我已经在 ubunto 18.04 上设置了 nginx - 所有内容都已修补。

我安装了 Certbot(sudo apt-get install python-certbot-nginx)

我使用“默认”配置,因为除了反向代理之外,我不会在此服务器上运行任何东西:

继承人的配置-在http上运行良好:

##
# Default server configuration
#
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    server_name _;

    location / {

            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
    }
}
#
## Redirect to internal servers
#
# HomeAssistant
server {
    listen 80;
    server_name hass.mysite.com;

    proxy_set_header Host   $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    location / {
            proxy_pass http://192.168.1.245:8123;
            proxy_buffering off;
    }
}
#
# SSH Tunnel
server {
    listen 80;
    server_name remote.mysite.com;

    proxy_set_header Host   $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    location / {
            proxy_pass http://192.168.1.250:443;
            proxy_buffering off;
    }
}

我很乐意将所有外部连接重定向到 https,并将内部连接保留为 http。

如果我运行,sudo certbot --nginx我会得到这个并且可以批准两个网站

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: hass.mysite.com
2: remote.mysite.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input

Certbot 没有提示将所有流量重定向到 https,而我正在努力进行设置 - 我是否必须在每次重定向时配置“listen 443”?

答案1

好的,经过大量的反复尝试后,它似乎不喜欢在没有父域的情况下认证子域。

幸运的是我在虚拟机中运行,所以我回滚到了 Certbot 安装之前。

我在配置中注释掉了这一行:

server_name _;

..并添加根域名站点:

server {
    server_name mysite.com www.mysite.com;

    root /var/www/html;

    index index.html index.htm mysite.html;
}

然后我获得了根域的证书:

sudo certbot --nginx -d mysite.com -d www.mysite.com

当我执行此操作时,Certbot 成功地将 SSL 配置添加到根域,因此我继续认证子域,并且这也运行良好。

相关内容