nginx-upstream-keepalive;accept_mutex-proxy_http_version-1.1-proxy_set_header-connection

weixin_33941350發表於2014-12-24

nginx+resin+redis+mysql的架構;

有外部模擬使用者請求的大量攻擊;它嘗試請求了80就斷開;看到的現象是在跑有nginx80的主機上TCP連線數少

:

ESTABLISHED少; 在後端resin的主機上有大量的TIME_WAIT,然後resin所在主機的核心會報flood攻擊資訊

而在nginx80的主機上SYN_RECV 少;有大量的SYN_SENT

================

嘗試通過nginx-upstream模組的keepalive機制來容納該種攻擊;

需要配置如下:

events {
use epoll;
worker_connections 65535;
accept_mutex off;--------------------------->新加;多執行緒需要
}

keepalive_timeout  100;--------------------->預設是65;設定更長的時間,形成連線池;讓響應使用者請求並轉發給resin的TCP連線保持可複用。

proxy_http_version 1.1;--------------------->新指定,預設是1.0;1.0不適用
proxy_set_header Connection "";----------->1.1不需要,所以清空

 

upstream name_server {
server ip:port;
keepalive 32;------------------------------------->個數,總共保持長連線的個數
}