без разницы Я нашел решение:
Проблема:
- Несколько веб-серверов с различными приложениями на каждом работают за FW и отвечают только на порту 443
- Веб-серверы имеют подстановочный сертификат, они являются веб-серверами IIS (whoooho очень смелый), имеют публичные c IP-адреса на каждом
- . Запрашивается, чтобы весь веб-сервер не был открыт для Inte rnet и перенесен в DMZ
- Поскольку IP4-адреса в наши дни короткие, невозможно получить больше IP-адресов
- Nginx, которые должны только проходить через запросы. Нет разрыва сертификата, дешифрования, повторного шифрования между веб-сервером и обратным прокси-сервером или чем-то еще.
Решение:
- Все веб-серверы должны быть перемещены во внутреннюю DMZ
- Один обратный прокси nginx должен обрабатывать все запросы, основанные на веб-серверах DNS записи и сопоставьте их. Это сделает публичный c IP4-адрес устаревшим
- Все веб-серверы получат частный IP-адрес
- Дикий сертификат просто подойдет для обработки всех псевдонимов для пересылки DNS.
Шаги:
1. Одиночный nginx RP должен быть размещен на внешнем DMZ.
2. Настроить nginx: - Установить nginx на полностью исправленный Debian с apt-get install nginx
. На данный момент вы получите версию 1.14 для nginx. Конечно, вы можете скомпилировать это тоже
Если вы установили nginx способом apt-get, он будет сконфигурирован со следующими модулями, которые вам понадобятся позже:
ngx_stream_ssl_preread, ngx_stream_map, and stream
. Не волнуйтесь, они уже в упаковке. Вы можете проверить с помощью
nginx -V
4. Настройка внешнего DNS: - все DNS-запросы от Inte rnet должны указывать nginx.
E.g webserver1.domain.com --> nginx
webserver2.domain.com --> nginx
webserver3.domain.com --> nginx
5. Конфигурация nginx обратный прокси
- CD для
/etc/nginx/modules-enabled
- vi имя файла по вашему выбору (например, passtru) Содержимое этого файла:
введите код здесь
stream {
map $ssl_preread_server_name $name {
webserver01.domain.com webserver01_backend;
webserver02.domain.com webserver02_backend;
}
upstream support_backend {
server 192.168.0.1:443; # or DNS Name
}
upstream intranet_backend {
server 192.168.0.2:443; # or DNS Name
}
log_format basic '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received"
"$upstream_connect_time"';
access_log /var/log/nginx/access.log basic;
error_log /var/log/nginx/error.log;
server {
listen 443;
proxy_pass $name; # Pass allrequests to the above defined variable container $name
ssl_preread on;
}
}
6. Отключите виртуальный веб-сервер по умолчанию rm /etc/nginx/sites-enabled/default
7. Перенаправьте все http traffi c на https:
- , создайте файл vi /etc/nginx/conf.d/redirect.conf и добавьте следующий код
введите код здесь
server {
listen 80;
return 301 https://$host$request_uri;
}
test
nginx -t
reload
systemctl reload nginx
Откройте браузер и проверьте /var/log/nginx/access.log
во время вызова веб-серверов
Фини sh