Reverse proxy принимает запросы от клиентов и перенаправляет на один или несколько backend серверов. Зачем: SSL termination (TLS только на proxy), load balancing, caching, compression. nginx — самый популярный. Минимальный config — 5 строк с proxy_pass. Важно: правильные headers (X-Real-IP, X-Forwarded-For), WebSocket upgrade при нужде.
Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.
apt install nginxproxy_http_version 1.1; proxy_set_header Upgrade \$http_upgrade; proxy_set_header Connection "upgrade";nginx -t && systemctl reload nginx| Сценарий | Конфиг |
|---|---|
| Минимальный reverse proxy | server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
} |
| Load balancing (round-robin) | upstream backend {
server 10.0.0.1:3000;
server 10.0.0.2:3000;
server 10.0.0.3:3000;
}
server {
location / { proxy_pass http://backend; }
} |
| Sticky sessions (IP hash) | upstream backend {
ip_hash;
server 10.0.0.1:3000;
server 10.0.0.2:3000;
} |
| WebSocket upgrade | location /ws/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
} |
| Caching proxy | proxy_cache_path /var/cache/nginx keys_zone=api_cache:10m;
location /api/ {
proxy_pass http://backend;
proxy_cache api_cache;
proxy_cache_valid 200 5m;
} |
nginx — proven stable, Level 7 load balancer. HAProxy — faster Level 4. Traefik — auto-discovery для Docker/K8s. Для 90% случаев nginx.
Blue-green: upstream с 2 backends, stop/start по одному. nginx автоматически routes на live.
Да — стандартный pattern. SSL на nginx (443), backend HTTP (3000). Backend не знает про TLS.
Мало. nginx adds ~0.1-0.5ms. Winning features (caching, compression) убирают 100-500ms.