Назад | Перейти на главную страницу

Nginx как обратный прокси и LetsEncrypt

Хотя в Интернете есть множество статей об этом, у меня все еще возникают проблемы с тем, чтобы заставить это работать.

Я установил 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 в корневые домены, поэтому я продолжил сертификацию поддоменов, и это тоже сработало.