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

Ограничение обратного проксирования NGINX только https

У меня есть обратный прокси-сервер 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, и поместите операторы прокси на этот сервер.