Настройка обратного прокси сервера NGINX с SSL-терминацией в CentOS 8 / RHEL 8
RHEL / Nginx 9-03-2023, 10:34 sobir 5 582 0
SSL-терминация является процессом на обратном прокси сервере, который обрабатывает шифрование и дешифровку SSL таким образом, чтобы трафик между прокси и внутренними серверами был в HTTP.
Let’s Encrypt — это центр сертификации, который предлагает простой способ создания и установки бесплатных сертификатов TLS/SSL, тем самым обеспечивая зашифрованные HTTPS соединения. Let’s Encrypt упрощает процесс генерирования сертификата с помощью клиента Certbot.
Кроме того, могут оказаться полезными следующие статьи:
- Установка веб сервера NGINX в CentOS 8 / RHEL 8
- Настройка виртуальных хостов NGINX в CentOS / RHEL
- Настройка полноценного веб сервера NGINX + Apache + FPM в CentOS 8 / RHEL 8
#!/bin/bash
read -p "Please enter your domain: " domain
read -p "Please enter the IP address or domain of the backend server: " backend
echo "Make directories..."
if [ -e /etc/nginx/sites-available ];
then
echo "Directory /etc/nginx/sites-available exist..."
else
mkdir /etc/nginx/{sites-available,sites-enabled}
fi
echo "Creating virtual host file for $domain"
cat <<EOT > /etc/nginx/sites-available/$domain.conf
server {
listen 80;
server_name $domain;
#return 301 https://\$server_name\$request_uri;
location ^~ /.well-known {
default_type 'text/plain';
allow all;
}
location / {
deny all;
}
location = /robots.txt {
log_not_found off;
access_log off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
error_log /var/log/nginx/$domain-error.log error;
access_log /var/log/nginx/$domain-access.log;
}
EOT
echo "Creating a symbolic link..."
ln -s /etc/nginx/sites-available/$domain.conf /etc/nginx/sites-enabled/
echo "Restarting nginx.service"
systemctl restart nginx
if dnf list installed | grep -q python3-certbot-nginx && [ -e /usr/bin/certbot ];
then
echo "Certbot is installed..."
else
echo "Installing EPEL repository..."
dnf install epel-release -y
echo "Installing Certbot NGINX client..."
dnf install certbot python3-certbot-nginx -y
fi
echo "Creating SSL certificate for $domain"
certbot certonly --nginx -d $domain
echo "Setting SSL certificate for $domain"
cat <<EOT >> /etc/nginx/sites-available/$domain.conf
server {
listen 443 ssl http2;
server_name $domain;
ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
#ssl_dhparam /path/to/dhparam;
# intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
location / {
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_pass http://$backend:80;
}
location = /robots.txt {
log_not_found off;
access_log off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
error_log /var/log/nginx/$domain-ssl-error.log error;
access_log /var/log/nginx/$domain-ssl-access.log;
}
EOT
echo "Redirecting HTTP request to HTTPS..."
sed -i 's/#return/return/g' /etc/nginx/sites-available/$domain.conf
echo "Restarting nginx.service"
systemctl restart nginx
Настройка обслуживания нескольких сайтов на одном веб сервере NGINX....
ПодробнееНастраиваем связку NGINX + Apache с mod_rewrite + PHP-FPM....
ПодробнееПолучаем валидные сертификаты SSL от Let's Encrypt для NGINX с использованием плагина webroot....
ПодробнееУстановка и настройка первичного сервера доменных имен BIND....
ПодробнееУстановка последней стабильной версии популярного веб сервера NGINX....
ПодробнееПоднимаем сервер SSL VPN OpenConnect для удаленного доступа пользователям....
ПодробнееНовые комментарии
Цитата: FidoNet Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные
К комментариюЦитата: sobir Цитата: FidoNet Спасибо за статью. Остальные статьи что находил
К комментариюЦитата: FidoNet Цитата: sobir Цитата: FidoNet Можт быть дело в
К комментариюЦитата: sobir Цитата: FidoNet Можт быть дело в dnsmasq.service? Ошибка Failed
К комментариюЦитата: FidoNet Цитата: sobir Цитата: FidoNet Спасибо за статью. Остальные
К комментариюМожт быть дело в dnsmasq.service? Ошибка Failed to set DNS configuration: Unit
К комментариюКакой дистрибутив Linux вы часто используете?
Календарь
« Ноябрь 2024 » | ||||||
---|---|---|---|---|---|---|
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |