/
SureWiki
/
SureBook
Обзор
Документация
Войти
/
SureWiki
/
SureBook
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
topics/Nginx_reverse_proxy.wikitext
223 строки
12 KB
Gerasti
renew topic names
03 июн 2026, 22:21
03 июн 2026, 22:21
b669f48
Код
Авторство
О чём код?
=== Установка === ==== Установка nginx ==== <syntaxhighlight lang="bash"> apt-get install nginx </syntaxhighlight> ==== Включение автозапуска ==== <syntaxhighlight lang="bash"> systemctl enable --now nginx </syntaxhighlight> === Настройка обратного прокси === <blockquote> Для настройки необходима ip-адресация и работа DNS(или hosts) </blockquote> ==== Создание файла конфигурации ==== <syntaxhighlight lang="bash"> nano /etc/nginx/sites-available.d/some.domain.conf </syntaxhighlight> ==== Базовая конфигурация обратного прокси ==== <syntaxhighlight lang="bash"> server { listen 80; server_name some.domain; location / { proxy_pass http://10.0.0.10:8080; proxy_http_version 1.1; 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_set_header X-Forwarded-Proto $scheme; proxy_set_header Connection ""; } } </syntaxhighlight> <blockquote> listen(порт прослушивания); server_name(имя виртуального хоста); location(обработка запросов к корню) </blockquote> <blockquote> proxy_pass(адрес внутреннего веб-приложения); proxy_http_version(версия HTTP-протокола) </blockquote> <blockquote> proxy_set_header Host(передача оригинального заголовка Host); X-Real-IP(реальный IP клиента) </blockquote> <blockquote> X-Forwarded-For(цепочка IP-адресов); X-Forwarded-Proto(протокол http или https); Connection(управление соединением) </blockquote> ==== Конфигурация для нескольких приложений ==== <syntaxhighlight lang="bash"> server { listen 80; server_name app1.some.domain; location / { proxy_pass http://10.0.0.10:8080; proxy_http_version 1.1; 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_set_header X-Forwarded-Proto $scheme; } } server { listen 80; server_name app2.some.domain; location / { proxy_pass http://10.0.0.20:8080; proxy_http_version 1.1; 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_set_header X-Forwarded-Proto $scheme; } } </syntaxhighlight> <blockquote> app1.some.domain перенаправляет на 10.0.0.10:8080; app2.some.domain перенаправляет на 10.0.0.20:8080 </blockquote> ==== Конфигурация с SSL-сертификатом ==== <syntaxhighlight lang="bash"> server { listen 443 ssl; server_name some.domain; ssl_certificate /etc/letsencrypt/some.domain/cert.cer; ssl_certificate_key /etc/letsencrypt/some.domain/cert.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; location / { proxy_pass http://10.0.0.10:8080; 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_set_header X-Forwarded-Proto $scheme; } } </syntaxhighlight> <blockquote> listen 443 ssl(прослушивание порта 443 с поддержкой SSL/TLS) </blockquote> <blockquote> ssl_certificate(путь к SSL-сертификату); ssl_certificate_key(путь к приватному ключу) </blockquote> <blockquote> ssl_protocols(разрешенные версии TLS); ssl_prefer_server_ciphers(приоритет шифров сервера) </blockquote> ==== Конфигурация с таймаутами ==== <syntaxhighlight lang="bash"> server { listen 80; server_name some.domain; location / { proxy_pass http://10.0.0.10:8080; proxy_http_version 1.1; 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_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 5s; proxy_send_timeout 30s; proxy_read_timeout 30s; } } </syntaxhighlight> <blockquote> proxy_connect_timeout(время ожидания подключения к backend); proxy_send_timeout(время отправки запроса) </blockquote> <blockquote> proxy_read_timeout(время ожидания ответа от backend) </blockquote> ==== Создание символической ссылки ==== <syntaxhighlight lang="bash"> ln -s /etc/nginx/sites-available.d/some.domain.conf /etc/nginx/sites-enabled.d/ </syntaxhighlight> === Проверка === ==== Проверка синтаксиса конфигурации ==== <syntaxhighlight lang="bash"> nginx -t </syntaxhighlight> ==== Применение настроек ==== <syntaxhighlight lang="bash"> systemctl restart nginx </syntaxhighlight> <blockquote> можно использовать systemctl reload nginx </blockquote> ==== Проверка открытых портов ==== <syntaxhighlight lang="bash"> ss -tulpn | grep nginx </syntaxhighlight> ==== Проверка доступности backend-сервера ==== <syntaxhighlight lang="bash"> curl -I http://10.0.0.10:8080 </syntaxhighlight> ==== Просмотр логов nginx ==== <syntaxhighlight lang="bash"> journalctl -u nginx --no-pager </syntaxhighlight>