У меня есть обратный прокси-сервер NGINX, настроенный для пересылки на разные порты на одном компьютере на основе URL-адреса запроса. у меня есть service1
на порт 8070 и service2
на порт 8071. Это мой конфиг nginx
upstream service1 {
server 127.0.0.1:8070;
}
upstream service2 {
server 127.0.0.1:8071;
}
server {
server_name a.example.com;
location /foo/ {
proxy_pass http://service1;
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 /bar/ {
proxy_pass http://service2;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
listen 80; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/a.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/a.example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Мне нужно включить порт 80 для certbot (позволяет шифровать), чтобы иметь возможность развертывать сертификаты. Я использую python3-certbot-nginx
плагин
Проблема прямо сейчас с этой конфигурацией заключается в том, что клиенты могут выполнять HTTP-запросы (незашифрованные) к моим службам через прокси.
Есть ли способ отключить перенаправление HTTP-запросов и сделать location
Правило соответствует только запросам https, чтобы запросы http не перенаправлялись, но http по-прежнему доступен для задач certbot? Если нет, есть ли другой способ, чтобы nginx не разрешал HTTP-запросы / принудительно https, который не сломал бы certbot?
Создайте отдельный HTTPS-only server
, и поместите операторы прокси на этот сервер.