1、Nginx的应用场景
a)、静态服务器(图片、视频服务),并发可达1-3W,另一个是lighttpd,
支撑的文件类型Html、js、css、flv等
b)、动态服务(Nginx+fastcgi的方式运行PHP,JSP),并发500-1500;
Apache+PHP,lighttpd+fastcgi php
c)、负载均衡(反向代理),日PV2KW以下,可以直接用Nginx做代理,
如:haproxy,F5,A10;
d)、缓存服务(如squid、varnish)
2、Nginx优化
1)、更改源码隐藏软件名称(在编译安装前完成,否则要重新编译安装)
2)、隐藏nginx header版本号
3)、更改nginx默认用户及用户组
4)、配置nginx worker进程个数(一般与CPU核数相当)
5)、根据CPU核数进行nginx进程优化,使进程均分到每一个CPU上
6)、选用epoll模型
7)、调整Nginx worker单个进程允许的客户端最大连接数
8)、配置Nginx worker进程最大打开文件数
9)、开启高效的文件传输模式
10)、设置连接超时时间
11)、上传文件大小设置(动态应用)
12)、fastcgi调优(配合PHP引擎动态服务)
13)、配置nginx gzip压缩功能
14)、配置Nginx expires缓存功能
15)、Nginx日志相关优化与安全(日志轮询与切割)
16)、Nginx站点目录及文件URL访问控制(防止恶意解析)
17)、防止恶意解析访问企业网站
18)、Nginx图片及目录防盗链(referer)
19)、Nginx错误页面的优雅显示
20)、Nginx防爬虫优化(robots.txt文件:爬虫协议)
21)、限制HTTP请求方法
22)、防DDOS***
23)、使用CDN为网站内容加速
24)、Nginx程序架构优化
25)、使用普通用户启动Nginx(监牢模式)—配置nginx多实例(启动服务加“-c”指定配置文件)
配置文件:nginx.conf格式
main #主模块
events {... #引擎模块
}
http { ... #协议模块
server { ..... #服务模块(server模块可以作独立虚拟主机)
location [dir or flie ...] { ... #对象模块(具体服务起作用的模块)
}
}
include dir/files #可以独立虚拟主机
}
#查看当编译nginx服务器时哪个模块能开户或关闭
./configure --help | less
#只允许我们的域名的访问
if ($host !~ ^(nixcraft.in|www.nixcraft.in|images.nixcraft.in)$ ) {
return 444;
}
# nginx重写规则,过滤某些URL
if ($uri ~* ".*(admin){0}.*product_id=(\d+)$") {
set $id $2;
rewrite ^/([^?]*) /product-$id.html? permanent;
}
#限制可用的请求方法(允许GET,HEAD和POST方法)
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
#如何拒绝一些User-Agents
if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
return 403;
}
如:阻止Soso和有道的机器人
if ($http_user_agent ~* Sosospider|YodaoBot) {
return 403;
}
#如何防止图片盗链
location /images/ {
valid_referers none blocked www.example.com example.com;
if ($invalid_referer) {
return 403;
}
}
如:重定向并显示指定图片
if ($invalid_referer) {
rewrite ^/images/uploads.*\.(gif|jpg|jpeg|png)$ http://www.examples.com/banned.jpg last
}
#目录限制
location /docs/ {
deny 192.168.1.1;</p>
allow 192.168.1.0/24;
deny all;
}