Хотя в Интернете есть множество статей об этом, у меня все еще возникают проблемы с тем, чтобы заставить это работать.
Я установил nginx на ubunto 18.04 - все исправлено на сегодняшний день.
Я установил 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, и я изо всех сил пытаюсь настроить его для этого - нужно ли мне настраивать «слушать 443» для каждого перенаправления?
Хорошо, после многих проб и ошибок кажется, что сертификация поддоменов без родительского домена не понравилась.
К счастью, я работаю на виртуальной машине, поэтому я откатился до установки 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 в корневые домены, поэтому я продолжил сертификацию поддоменов, и это тоже сработало.