Добрый день,коллеги! Прошу помочь, пожалуйста.
Использую nginx в качестве reverse proxy.
Плюс мне нужно пропустить трафик дополнительно петлей через внешний аппаратный фаервол.
Хождение трафика такое:
client => nginx => fw(dnat,snat) => nginx => backend_web_server
nginx - один и тот же сервер.
Проблема: думаю, что не работают keepalive.
В ОС (nginx) большое кол-во конектов, которые идут через петлю, в состоянии time-wait.
Посмотрел dump трафика. Соединение закрывает nginx инициатор, т. е. тот кто инициировал коннект до fw.
Конфиг:
upstream loop{
keepalive 100;
keepalive_requests 100000;
keepalive_timeout 300s;
server
172.18.203.32;
}
server {
listen 443 ssl;
resolver
8.8.8.8;
resolver_timeout 5s;
server_name
trunk.mysite.ru;
access_log /var/log/nginx/trunk.mysite.ru-rsa-access.log upstream_time;
error_log /var/log/nginx/trunk.mysite.ru-rsa-error.log;
ssl_protocols TLSv1 TLSv1.2;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1;
add_header Strict-Transport-Security "max-age=31536000";
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
# Направление трафика в петлю
proxy_pass http://loop;
proxy_read_timeout 240;
proxy_http_version 1.1;
proxy_set_header Connection "";
keepalive_requests 100000;
keepalive_timeout 300s;
}
location /basic_status {
stub_status;
access_log off;
allow
127.0.0.1;
deny all;
}
}
...
server {
# Получение трафика из петли
listen
172.18.197.3:80;
server_name
trunk.mysite.ru;
set_real_ip_from
172.18.0.0/16;
real_ip_header X-Real-IP;
real_ip_recursive on;
access_log /var/log/nginx/trunk.mysite.ru-rsa-loop-access.log upstream_time;
error_log /var/log/nginx/trunk.mysite.ru-loop-error.log;
keepalive_requests 100000;
keepalive_timeout 300s;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass
https://172.18.130.140;
proxy_read_timeout 240;
keepalive_requests 100000;
keepalive_timeout 300s;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}