1、Nginx的应用场景

a)、静态服务器(图片、视频服务),并发可达1-3W,另一个是lighttpd

    支撑的文件类型Htmljscssflv

 b)、动态服务(Nginx+fastcgi的方式运行PHPJSP),并发500-1500

     Apache+PHPlighttpd+fastcgi php

 c)、负载均衡(反向代理),日PV2KW以下,可以直接用Nginx做代理,

如:haproxyF5A10

 d)、缓存服务(如squidvarnish

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;

allow   192.168.1.0/24;

deny    all;

}