尽管网络上有大量关于此问题的文章,但我仍然无法让它发挥作用。
我已经在 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 配置添加到根域,因此我继续认证子域,并且这也运行良好。