Nginx: настройка проксирования

Задача: есть локальный web сервис запущенный…ну например в докере. Не суть в общем где запущен. Может быть просто какой то локальный сервис типа web интерфейса к zigbee2mqtt: htpp://192.168.8.1:8080 Необходимо дать возможность открывать его в браузере, с нормальным ssl сертификатом ну и всё такое. Вот собственно для этого и нужно проксирование.

Решение: первым делом получим сертификат для домена. Для этого добавим в настройки nginx следующие строчки:

server {
        listen 80;
        server_name ваш_домен;
        root /var/www/m;
        index index.php;
}

После чего получим сертификат:

service nginx restart
certbot certonly --webroot -w /var/www/m -d ваш_домен

Далее настройки nginx изменим на:

server {
        listen 80;
        listen [::]:80;
        listen 443 ssl;
        server_name ваш_домен;
        if ($scheme = 'http') {return 301 https://$host$request_uri;}
        ssl_certificate     /etc/letsencrypt/live/ваш_домен/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/ваш_домен/privkey.pem;
        location / {
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_pass http://192.168.8.1:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
}

Что тут есть?

  1. Переадрессация с http на https
  2. Подсовывание сертификата
  3. Проксирование http://192.168.8.1:8080 на ваш_домен

Собственно и всё