Как NGINX обратный прокси-сервер для внутреннего сервера, у которого есть самоподписанный сертификат? - PullRequest
0 голосов
/ 28 мая 2020

У меня небольшая сеть с веб-сервером и сервером доступа OpenVPN (с собственным веб-интерфейсом). У меня есть только 1 publi c ip, и я хочу иметь возможность указывать субдомены на веб-сайты на веб-сервере (например, website1.domain.com, website2.domain.com) и указывать субдомен vpn.domain.com на веб-интерфейс сервер доступа OpenVPN.

После некоторых действий Google я думаю, что путь к go - это настроить прокси-сервер. NGINX похоже, может сделать это с помощью функции "proxy_pass". Я заставил его работать для URL-адресов HTTP-бэкэнда (веб-сайтов), но он не работает для веб-интерфейса OpenVPN Access Server, поскольку он заставляет использовать HTTPS. Меня устраивает HTTPS, и я предпочитаю использовать его также для веб-сайтов, размещенных на веб-сервере. По умолчанию самозаверяющий сертификат. установлен, и я хочу использовать также самоподписанный сертификат. для других сайтов.

Как я могу «принять» самоподписанный сертификат. для бэкэнд-серверов? Я обнаружил, что мне нужно создать сертификат. и определите его в конфигурации обратного прокси NGINX, но я не понимаю, как это работает, например, на моем сервере OpenVPN уже установлен сертификат SSL. Я могу посетить веб-интерфейс OpenVPN через https://direct.ip.address.here/admin, но получаю страницу «Этот сайт не может обеспечить безопасное соединение», когда я пытаюсь получить доступ к веб-интерфейсу через Chrome.

Моя NGINX конфигурация обратного прокси:

server {
  listen        443;
  server_name   vpn.domain.com;

  ssl_verify_client off;

  location / {
    # app1 reverse proxy follow
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass https://10.128.20.5:443;
    proxy_ssl_verify off;
  }

  access_log /var/log/nginx/access_log.log;
  error_log /var/log/nginx/access_log.log;
}

server {
  listen        80;
  server_name   website1.domain.com;

  location / {
    # app1 reverse proxy follow
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://10.128.11.20:80;
  }

  access_log /var/log/nginx/access_log.log;
  error_log /var/log/nginx/access_log.log;
}


Ближайшая мысль ... Возможно, NGINX совсем не подходит для этого (сейчас или в долгосрочной перспективе )? Предположим, я могу исправить сертификат. Проблема, которая у меня есть в настоящее время, и нам нужно больше внутренних веб-серверов для обработки трафика c, можно ли также масштабировать прокси NGINX? как кластер или балансировщик нагрузки или что-то в этом роде? Стоит ли искать совершенно другой инструмент?

...