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;
}