~/tools/nginx/reverse-proxy-generator
NginxNginx Reverse Proxy Generator
Сгенерировать location-блок для reverse proxy по параметрам.
Как это работает
Настройка reverse proxy в nginx это одна из тех вещей, которые все разработчики делают примерно раз в полгода и каждый раз забывают точный синтаксис заголовков. Nginx reverse proxy generator собирает рабочий location блок по двум простым полям, путь и адрес upstream сервера, и сразу включает все заголовки, которые обычно нужны для нормальной работы websocket соединений и корректной передачи реального IP клиента.
Сгенерированный блок включает proxy_http_version 1.1 и заголовки Upgrade с Connection, без которых не работают websocket подключения, что часто становится неприятным сюрпризом уже после деплоя, когда внезапно отваливается realtime функциональность приложения.
Также добавляются заголовки X-Real-IP и X-Forwarded-For, без них ваше приложение за проксей будет видеть только один IP адрес самого nginx вместо реальных адресов посетителей сайта, что довольно неприятно, если вы полагаетесь на геолокацию или банят по IP.
Частые вопросы
Зачем в location блоке нужен proxy_set_header Host?
Без этого заголовка приложение за проксей будет видеть в качестве Host внутренний адрес вроде 127.0.0.1 вместо настоящего домена сайта, что ломает генерацию абсолютных ссылок и работу некоторых фреймворков.
Нужны ли заголовки Upgrade и Connection, если приложение не использует websocket?
Строго говоря нет, но их наличие ничему не вредит, а если позже понадобится добавить websocket функциональность, конфиг уже будет к этому готов.
Как добавить несколько location блоков для разных путей одного домена?
Сгенерируйте нужное количество блоков по отдельности, меняя поле пути на каждой генерации, и вставьте все получившиеся блоки внутрь одного server блока в основном конфиге nginx.
Нужно ли перезапускать nginx после изменения конфига?
Да, но необязательно полный рестарт, обычно достаточно команды nginx минус s reload, которая применяет изменения без разрыва уже установленных соединений.