nginx从入门到实战(一)
最权威的文档和教程:nginx.org
-
rpm -ql nginx
-
worker_processes工作进程数一般设置为cpu数量。也可以设置为auto
-
worker_connections可以优化,可以设置为1万多个。
-
limit_req_zone同一IP限制请求频率。
http { limit_conn_zone $binary_remote_addr zone=conn_zone:1m; #binary比string节省空间。同IP限速1秒一个request。 limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s; } location / { #limit_conn conn_zone 1; #burst为缓冲队列,每秒清除rate个请求.每秒最大可处理rate+burst个请求 limit_req zone=req_zone burst=3 nodelay; limit_req zone=req_zone burst=3; #limit_req zone=req_zone; } http { map $http_x_forwarded_for $clientRealIp { "" $remote_addr; ~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr; } } 我们通过map自定义了一个变量$clientRealIp; 如果X-Forwarded-For头是空的,那么客户端真实IP就是remote_addr; 如果X-Forwarded-For头非空,我们就通过正则匹配,捕获到第一段,这就是用户的真实IP; 必须注意的是,在每一层代理都要设置X-Forwarded-For头。
-
http_access_module