httpd:MPM
prefork,worker,event
prefork:
主進程生成多個子進程,每個子進程處理一個請求
worker:
主進程生成多個子進程,每個子進程生成多個線程,每個線程響應一個請求
event:
主進程生成多個線程,每個線程響應多個請求
server_name NAME [...];
後面可以跟多個主機名,名稱還可以使用正則表達是(~)或通配符
Nginx server_name匹配順序(匹配優先級)
1、先做精確匹配檢查:
2、左側通配符匹配檢查:*.liheng1815.xyz
3、右側通配符匹配檢查:mail.*
4、正則表達式匹配檢查:如~^.*\.liheng1815\.xyz$
5、default_server 如果沒有設置default server,則由上往下匹配第一個server
server{
server_name www.liheng1815.xyz;
}
server{
server_name *.liheng1815.xyz;
}
server {
server_name www.*;
}
location [= | ~ | ~* | ^~] uri {...}
功能:允許根據用戶請求的URI來匹配定義的各location。匹配到時,此請求將被相應的location匹配塊中的配置所處理,例如做訪問控制等功能
=:精確匹配檢查
~:正則表達式模式匹配檢查,區分字符大小寫
~*:正則表達式模式匹配檢查,不區分字符大小寫
^~:URL的前半部分匹配,不支持正則表達式
匹配有優先級:
精確匹配(=)、^~、~、~*、不帶任何符號的location
server {
listen 80;
server_name www.liheng1815.xyz;
location / {
root "/vhosts/web1";
}
location /images {
root "/vhosts/images";
}
location ~* \.php$ {
...;
...;
}
}
rewrite regex replacement flag;
例如:rewrite ^/images/(.*.jpg)$ /imgs/$1 break;
http://www.liheng1815.xyz/images/a/b/c/1.jpg -->/imgs/a/b/c/1.jpg
flag:
last:此rewrite規則重寫完成後,就不再被後面的rewrite規則進行處理,而是有User Agent重新對重寫的URL再一次發起請求,並從頭執行類似的過程。
break:一旦此rewrite規則重寫完成後,直接終止重寫。
redirect:以302響應碼(臨時重定向)返回新的URL。
permanent:以302響應碼(永久重定向)返回新的URL。
開啓gzip壓縮:
gzip on;
gzip_min_length 1;
gzip_comp_level 2;
gzip_type text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
設置允許列出目錄結構(作爲一個下載站點)
autoindex on;
限制網站訪問速度
set $limit_rate 1K;
反向代理配置
http段添加如下一行:
proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=my_cache:10M max_size=10g inactive=60m use_temp_path=off; #配置反向代理緩存
定義上游服務器
upstream website {
server 127.0.0.1:8080;
}
server {
server_name www.liheng1815.xyz;
listen 80;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxt_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#配置緩存
proxy_cache my_cache;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 302 1d;
#反向代理
proxy_pass http://website
}
}
server {
server_name loaclhost;
listen 127.0.0.1:8080;
location / {
alias www/;
index index.html index.php index.htm;
}
}
防盜鏈配置
Syntax: valid_referers none | blocked | server_names | string ...;
可以配置在server與location段
通過valid_referers指令和$invalid_referer變量,就可以通過rewrite功能來實現防盜鏈,有以下兩種方法實現:
1、根據請求資源的資源類型
2、根據請求目錄
一、根據請求資源類型實現防盜鏈配置實例如下:
...
server {
...
listen 80;
server_name www.liheng1815.xyz;
root /var/html;
location ~* .*\.(gif|jpg|png|flv|swf|rar|zip) {
...
valid_referers none blocked server_names *.liheng1815.xyz;
if ($invalid_referer) {
rewrite ^/ http://www.test.com/1.jgp;
#return 403;
}
}
}
server {
listen 80;
server_name www.test.com;
root /var/web;
}
...
二、根據請求目錄實現防盜鏈配置實例如下:
...
server {
...
listen 80;
server_name www.liheng1815.xyz;
location /images/ {
...
root /server/images/;
valid_referers none blocked server_names *.liheng1815.xyz;
if ($invalid_referer) {
rewrite ^/ http://www.test.com/1.jgp;
#return 403;
}
}
}
server {
listen 80;
server_name www.test.com;
root /var/web;
}
…
僞靜態配置:php頁面僞靜態爲html文件
location / {
rewrite ^(.*)/equip(d+).html$ $1/index.php?m=content&c=index&a=lists&catid=$2 last;
}