• %user%
logotype
SysOps
  • Главная
  • Новости
  • О проекте
  • Контакты
  • Статистика
  • Сервисы
    • My IP Address
    • IP Calculator
    • WHOIS Client
    • Speedtest
    • Crontab
    • NGINXConfig
    • Composerize

  • RHEL
  • Ubuntu
  • TCP/IP
  • DNS
  • Containers
  • Cloud
  • Ansible
  • NGINX
  • LAMP
  • LEMP
  • SQL
  • Zabbix
  • Netfilter
  • MikroTik

Настройка обратного прокси сервера NGINX с SSL-терминацией в CentOS 8 / RHEL 8


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

Новость отредактировал: sobir - 9-03-2023, 10:34
Причина: Обновлена конфигурация

  • Комментарии
  • О статье
  • Похожие новости
У данной публикации нет комментариев.

sobir

Автор

9-03-2023, 10:34

Дата публикации

RHEL / Nginx

Категория
  • Комментариев: 0
  • Просмотров: 1 114
RHEL / Nginx
Настройка виртуальных хостов NGINX в CentOS / RHEL
RHEL / Nginx / LAMP Stack / LEMP Stack
Настройка полноценного веб сервера NGINX + Apache + FPM в CentOS 8 / RHEL 8
RHEL / Ubuntu / Nginx
Получаем валидные сертификаты SSL от Let's Encrypt для NGINX
RHEL / DNS
Настройка авторитетного DNS сервера BIND в CentOS 8 / RHEL 8
RHEL / Nginx
Установка веб сервера NGINX в CentOS 8 / RHEL 8
Ubuntu
Поднимаем SSL VPN OpenConnect с Let's Encrypt в Ubuntu 20.04
Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Комментарии

Салом, можно ещё создать файл в /etc/nginx/proxy_params, a потом добавить туда следующие строки: 

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

после просто подключить в конфиге nginx: 

proxy_pass https://your_backend;

include proxy_params;

на Ubuntu такой файл уже существует можно просто подключить 

8 сентября 2022 18:23

komronu

Можно ещё так:

1. Создаем отдельную сеть для наших контейнеров

docker network create zbx-net

2. Указываем сеть по умолчанию в docker-compose.yml

networks:
  default:
    name: zbx-net
    external: true

26 августа 2022 10:43

sobir

Спасибо за отзыв, написал отдельную статью по установке и настройке Ansible

22 августа 2022 15:12

komronu

Думаю в статье необходимо также описать процесс установки Ansible.
19 августа 2022 18:00

sobir

Принудительное обновление сертификата:

certbot certonly --force-renew -d newsite.com
17 октября 2021 11:40

sobir

Какой дистрибутив Linux вы часто используете?
Подпишись на канал
Выбрать дизайн сайта
1 посетитель на сайте. Из них:
Гости1
© 2020 SysOps Яндекс.Метрика

Авторизация

Регистрация Забыли пароль?