Nginx總結

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章