Nginx обратный прокси + Let's Encrypt для нескольких сайтов - PullRequest
0 голосов
/ 04 марта 2020

У меня возникли некоторые трудности при настройке обратного прокси Nginx для следующей настройки:

1) У меня есть DDNS от моего провайдера, так что site.example.isp всегда указывает на мой реальный IP.

2) Обратный прокси Nginx, который должен разрешать следующее:

a) https://site.example.isp ---> сервер nextcloud, работающий на отдельной машине позади роутер. b) https://site.example.isp/hassio ---> сервер домашнего помощника, работающий на отдельном компьютере за маршрутизатором c) https://site.example.isp/transmission ---> сервер, на котором выполняется передача и другие функции на отдельная машина

Три машины и одна, на которой работает сервер Nginx, работают как контейнеры / vms в Proxmox.

На машине Nginx мне удалось настроить сертификаты Letsencrypt и удалось получить пункт 2а) работает.

Проблема, с которой я столкнулся, связана с 2b и 2 c. Файл .conf для 2b выглядит следующим образом:

server {
        listen 80;
        server_name example.site.isp;
        root /hassio;

        return 301 https://$server_name$request_uri;
}
server {
        listen 443 ssl;
        server_name example.site.isp;
        root /hassio;

        access_log /var/log/nginx/hassio.example.site.isp.access.log;
        error_log /var/log/nginx/hassio.example.site.isp.error.log;

        client_max_body_size 0;
        underscores_in_headers on;

        ssl on;
        ssl_certificate /etc/letsencrypt/live/example.site.isp/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.site.isp/privkey.pem;

        ssl_stapling on;
        ssl_stapling_verify on;

        location / {
                proxy_headers_hash_max_size 512;
                proxy_headers_hash_bucket_size 64;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                add_header Front-End-Https on;
                # whatever the IP of your cloud server is
                proxy_pass http://hassio.IP:8123;
        }
}

В этой конфигурации при посещении https://example.site.isp/hassio я попадаю на экран входа в систему Hassio. Я ввел свои учетные данные, но им было отказано.

Я не могу понять, почему это происходит.

Для случая 2 c я не знаю, как к нему подойти. Локально, когда я захожу на веб-страницу передачи, я go на http://local.transmission.IP: 9091 , и я вижу окно входа и все. Я видел несколько конфигураций для передачи и Nginx, но ни одна не работала для меня. Один пример, который я попробовал, таков:

server {
        listen 80;
        server_name example.site.isp;

        return 301 https://$server_name$request_uri;
}
server {
        listen 443 ssl;
        server_name example.site.isp;

        access_log /var/log/nginx/transmission.example.site.isp.access.log;
        error_log /var/log/nginx/transmission.example.site.isp.error.log;

        client_max_body_size 0;
        underscores_in_headers on;

        ssl on;
        ssl_certificate /etc/letsencrypt/live/example.site.isp/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.site.isp/privkey.pem;

        ssl_stapling on;
        ssl_stapling_verify on;

        location /transmission {
                proxy_read_timeout 300;
                proxy_pass_header  X-Transmission-Session-Id;
                proxy_set_header   X-Forwarded-Host $host;
                proxy_set_header   X-Forwarded-Server $host;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

                # if you changed the port number for transmission daemon, then adjust the
                # folllowing line
                proxy_pass         http://transmission.IP:9091/transmission/web/;
        }
        # Also Transmission specific
        location /rpc {
                proxy_pass         http://transmission.IP:9091/transmission/rpc;
        }
        #TRANSMISSION TORRENT WEB CLIENT SETUP END
        location /upload {
                proxy_pass         http://transmission.IP:9091/transmission/upload;
        }
}

Но это просто дает мне 404: Not Found.

Я никогда не делал ничего подобного, и я понятия не имею, как это схватить проблема. Я был очень счастлив, что мне удалось заставить работать следующее облако. Я также хотел бы, чтобы Home Assistant принимал через обратный прокси-сервер, потому что у меня есть некоторая домашняя автоматизация, которую я хотел бы сделать.

Любая помощь приветствуется. Приветствия

...