企业级Nginx Web 服务优化实战
1.隐藏Nginx的软件版本号
server_tokens off;
2.更改默认服务用户
user nginx nginx;
# useradd -r -s /sbin/nologin -m -d /var/lib/nginx nginx
3.优化Nginx服务的worker进程个数
worker_processes 4|auto;
4.进程与CPU的亲和力
worker_cpu_affinity 0001 0010 0100 1000;
5.Nginx事件处理模型优化
use epoll;
6.单个进程允许的客户端最大连接数
# ulimit -HSn 65535
worker_connections 10240;
7.进程最大打开文件数
worker_rlimit_nofile 65535;
8.优化服务器域名的散列表大小
尽可能使用确切的名字server_name
9.开启高效文件传输模式
sendfile on;
tcp_nopush on;
tcp_nodelay on;
10.优化Nginx连接参数,调整连接超时时间
keepalive_timeout 60;
client_header_timeout 15;
client_body_timeout 60;
send_timeout 25;
11.上传文件大小的限制
client_max_body_size 8m;
12.压缩
gzip on;
gzip_min_length 1K;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 9;
gzip_types text/css text/xml application/javascript;
gzip_vary on;
13.Nginx expires 缓存
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 365d;
}
location ~ .*\.(js|css)?$
{
expires 10d;
root /usr/share/nginx/html/wqh/;
}
location ~ ^/(images|js|css)/
{
expires 30d;
}
location ~ (robots.txt)
{
expires 7d;
break;
}
14.日志
访问日志的切割
不记录不需要的访问日志
location ~ .*\.(js|gif|jpg|jpeg|png|bmp|swf)$
{
access_log off;
root /usr/share/nginx/html/wqh/;
}
访问日志的权限
假如日志目录为/app/logs
chown -R root.root /app/logs
chmod -R 700 /app/logs
不需要在日志目录上给Nginx用户读或写许可
15.禁止解析指定目录下的指定程序
location ~ ^/images/.*\.(php|php5|sh|pl|py)$
{
deny all;
}
写在Nginx处理PHP的配置前面
location ~* \.(txt|doc)$
{
deny all;
root /usr/share/nginx/html/wqh/;
}
location ~ ^/(static)/
{
deny all;
}
location ~ ^/(static|js)/
{
deny all;
}
禁止访问目录并返回指定的HTTP状态码
location /admin/ { return 404; }
16.限制网站来源IP
location ~ ^/wqh/
{
allow 1.1.1.1;
deny all;
}
17.配置nginx,禁止非法域名解析访问企业网站
server{
listen 80 default_server;
server_name _;
return 501;
}
server{
listen 80 default_server;
servername _;
rewrite ^(.*) http://www.wqh.com/$1 permanent;
}
某域名恶意解析到公司IP
server{
if ($host !~ ^www/.wqh/.com$){
rewrite ^(.*) http://www.wqh.com/$1 permanent;
}
}
18.防盗链
location ~* ^.+\.(jpg|png|flv|zip)$
{
valid_referers none blocked *.wqh.com wqh.com;
if ($valid_referers)
{
rewrite ^/ http://bbs.wqh.com/fang.jpg;
}
root /usr/share/nginx/html/wqh/;
}
19.错误页面优雅显示
error_page 404 /404.html;
error_page 404 =200 /404.html;
error_page 404 301 400 http://bbs.wqh.com/fang.jpg;
20.目录文件权限控制
目录755 文件644
用户组都是root
用户上传目录755 用户组nginx
21.防爬虫优化
if ($http_user_agent ~* LWP::Simple|BBBike|wget)
{
return 403;
}
23.测试禁止不同的浏览器访问
if ($http_user_agent ~* "Firefox|MSIE")
{
rewrite ^(.*) http://www.allinmd.cn/$1 permanent;
}
24.nginx限制http的请求方法
if ($request_method ~* ^(GET)$ )
{
return 501;
}