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;
}
}
Что тут есть?
- Переадрессация с http на https
- Подсовывание сертификата
- Проксирование http://192.168.8.1:8080 на ваш_домен
Собственно и всё