Простой пример конфига Nginx для проксирования HTTP трафика. Смысл заключается в том, что бы перенаправить запросы с frontend сервера, который у меня обозначен как 1.1.1.1
на back-end сервер 2.2.2.2
. Дополнительно мы включаем кэширование, что позволяет существенно снизить нагрузку на сервер.
Для начала кратко напишу про настройки кэширования Nginx. В proxy_cache_path
мы указываем расположение кэша. Для максимальной производительности я буду хранить его в оперативной памяти. Параметр levels
задаёт уровни иерархии кэша. В нашем случае файлы будут сохранятся в каталог по аналогии примеру ниже:
/var/run/proxy_cache/c/29/b7f54b2df7773722d382f4809d65029c
Далее мы указываем имя зоны, время хранения файлов и размер кэша. Если к данным не обращаться более 8 минут, то закэшированные элементы будут удалены. Директива proxy_cache_key
используется для создания схемы идентификации — оставляем без изменений. В proxy_cache_valid
задаем время кэширования кодов ответа.
В директивах listen 1.1.1.1:80
и server_name proxy.com
мы указываем ip-адрес и доменное имя сервера на котором запущен Nginx. После чего proxy_pass
указываем адрес сервера на который будут передаваться запросы.
proxy_cache_path /var/run/proxy_cache levels=1:2 keys_zone=backcache:8m max_size=100m; proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args"; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; server { listen 1.1.1.1:80; server_name proxy.com; location / { proxy_pass http://2.2.2.2; proxy_set_header HOST $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache backcache; proxy_cache_bypass $http_cache_control; add_header X-Proxy-Cache $upstream_cache_status; } }