亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

nginx(二):進(jìn)階配置介紹--rewrite用法,壓縮,https虛擬主機(jī)等

JayChen / 482人閱讀

摘要:經(jīng)由超文本傳輸協(xié)議通信,但是數(shù)據(jù)包由安全協(xié)議加密,實(shí)現(xiàn)加密數(shù)據(jù)與認(rèn)證功能。該模塊指令定義相關(guān)設(shè)置證書文件,私鑰文件,會(huì)話緩存等內(nèi)容。允許在客戶端建立會(huì)話時(shí)傳遞請(qǐng)求服務(wù)器名稱,這樣服務(wù)器就會(huì)知道該發(fā)送哪個(gè)虛擬主機(jī)下的證書文件。

1、nginx基本狀態(tài)信息頁(yè)面

配置示例:

location  /basic_status {
                            stub_status;
                        }

頁(yè)面展示含義:

Active connections: 291 
server accepts handled requests
    16630948 16630948 31070465 
Reading: 6 Writing: 179 Waiting: 106     

Active connections: 活動(dòng)狀態(tài)的連接數(shù);
accepts:已經(jīng)接受的客戶端請(qǐng)求的總數(shù);
handled:已經(jīng)處理完成的客戶端請(qǐng)求的總數(shù);
requests:客戶端發(fā)來(lái)的總的請(qǐng)求數(shù);
Reading:處于讀取客戶端請(qǐng)求報(bào)文首部的連接的連接數(shù);
Writing:處于向客戶端發(fā)送響應(yīng)報(bào)文過(guò)程中的連接數(shù);
Waiting:處于等待客戶端發(fā)出請(qǐng)求的空閑連接數(shù);
2、記錄請(qǐng)求日志

指令:

log_format
作用域: http

access_log
作用域: http, server, location, if in location, limit_except

open_log_file_cache
作用域: http, server, location

2.1 log_format

在http區(qū)域定制日志格式
用法:log_format name string ...;
name指定一個(gè)格式名稱,string可以使用nginx核心模塊及其它模塊內(nèi)嵌的變量指定格式。

2.2 access_log

可在每個(gè)server中,或location中指定一個(gè)日志存放路徑
用法:

access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;

指定日志存放路徑path,格式format,緩沖區(qū)大小buffer,也可啟用壓縮日志,指定壓縮級(jí)別gzip

2.3 open_log_file_cache

定義一個(gè)緩存保存活躍的日志文件描述符數(shù)據(jù)
用法:

open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;

max:緩存的最大文件描述符數(shù)量;
min_users:在inactive指定的時(shí)長(zhǎng)內(nèi)訪問大于等于此值方可被當(dāng)作活動(dòng)項(xiàng);
inactive:非活動(dòng)時(shí)長(zhǎng);
valid:驗(yàn)證緩存中各緩存項(xiàng)是否為活動(dòng)項(xiàng)的時(shí)間間隔;
配置示例:

log_format combined "$remote_addr - $remote_user [$time_local] "
                       ""$request" $status $bytes_sent "
                       ""$http_referer" "$http_user_agent" "$gzip_ratio"";

access_log /var/logs/nginx-access.log combined buffer=32k;
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
3、rewrite重寫

將用戶請(qǐng)求的URI基于regex所描述的模式進(jìn)行檢查,而后完成替換;
URL重寫是一個(gè)非常有用的功能,如果一個(gè)網(wǎng)站在改進(jìn)的過(guò)程中結(jié)構(gòu)發(fā)生變化,無(wú)需客戶端更改已保存訪問地址仍可正常訪問;提升網(wǎng)站安全性,如放盜鏈行為。

3.1 rewrite
syntax: rewrite regex replacement [flag]
Context:    server, location, if

將用戶請(qǐng)求的URI基于regex所描述的模式匹配檢查,匹配到時(shí)將其替換成replacement指定的新URI;
rewrite指令在同一級(jí)配置塊中存在多條rewrite規(guī)則,會(huì)按照順序自上而下逐一執(zhí)行;被某一規(guī)則替換完成后,重新開始新一輪檢查,因此本身具有循環(huán)機(jī)制,flag所表示的標(biāo)志位可控制循環(huán)機(jī)制;如果replacement是以http://或其他協(xié)議開頭的字符串,則直接以重定向方式返回給客戶端;
另外,rewrite指令接收到的URI是不包含host地址的,例如http://cutemsyu.com/articles/...,不包含"cutemsyu.com" ,在寫regex規(guī)則時(shí)應(yīng)當(dāng)注意。

[flag] 可用標(biāo)識(shí)如下:

last:停止在當(dāng)前區(qū)域繼續(xù)處理,將重寫的新URI在各location中重新處理;

break:將此處重寫的URI在本塊中繼續(xù)處理,但新的URI不會(huì)轉(zhuǎn)向其他location中處理;

redirect:將重寫的URI直接返回給客戶端,狀態(tài)代碼為302,表示臨時(shí)重定向。用在replacement不以"http://"或"https://"開頭的情況下;

permanent:將重寫的URI直接返回給客戶端,狀態(tài)碼為301,指明為永久重定向。

Example:

#flag 是last的一個(gè)例子
server {
    ...
    rewrite ^(/download/.*)/media/(.*)..*$ $1/mp3/$2.mp3 last;
    rewrite ^(/download/.*)/audio/(.*)..*$ $1/mp3/$2.ra  last;
    return  403;
    ...
}

#如果上面的rewrite規(guī)則寫在location中,則應(yīng)該使用break標(biāo)識(shí),防止死循環(huán),如果循環(huán)超過(guò)10此,返回500錯(cuò)誤碼
location /download/ {
    rewrite ^(/download/.*)/media/(.*)..*$ $1/mp3/$2.mp3 break;
    rewrite ^(/download/.*)/audio/(.*)..*$ $1/mp3/$2.ra  break;
    return  403;
}
3.2 return
syntax: return code [text];
        return code URL;
        return URL;
context: server, location, if

停止處理并返回一個(gè)狀態(tài)碼給客戶端。

3.3 if 指令
syntax: if (condition) { ... }
context: server, location

引入一個(gè)新的配置上下文,滿足條件時(shí)執(zhí)行配置塊中的指令
condition為判斷條件,支持三種設(shè)置方法:

變量名,如果變量值為空字符串或者以0開頭的任意字符串,則表示條件為false

使用比較符判斷變量與字符串的邏輯關(guān)系

判斷文件或目錄存在情況

其中 比較操作符有:

=

!=

~ 模式匹配,區(qū)分字符大小寫

~* 模式匹配,不區(qū)分字符大小寫

!~:模式不匹配,區(qū)分字符大小寫

!~*:模式不匹配,不區(qū)分字符大小寫

文件及目錄存在性判斷:

-e, !-e 檢查一個(gè)文件,目錄,或軟鏈接是否存在

-f, !-f 檢查一個(gè)文件是否存在

-d, !-d 檢查一個(gè)目錄是否存在

-x, !-x 檢查一個(gè)文件是否可執(zhí)行

Example:

if ($http_user_agent ~ MSIE) {
    rewrite ^(.*)$ /msie/$1 break;
}

if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
    set $id $1;  
}

if ($request_method = POST) {
    return 405;
}

if ($slow) {
    limit_rate 10k;
}

if ($invalid_referer) {
    return 403;
}
3.4 rewrite的應(yīng)用 3.4.1 域名跳轉(zhuǎn)

Example:

#訪問video.cutemsyu.com 跳轉(zhuǎn)至v.cutemsyu.com
server {
    listen 80;
    server_name video.cutemsyu.com;
    rewrite ^(.*) http://v.cutemsyu.com$1 ;
    ...
}
3.4.2 rewrite uri中參數(shù)

默認(rèn)情況下nginx進(jìn)行rewrite后都會(huì)自動(dòng)添加舊地址中參數(shù)部分,在replacement末尾添加"?"即可屏蔽舊地址中的參數(shù)
Example:

   ##原來(lái)的訪問的url為http://cutemsyu.com/article/nature/index.php?id=22341
   rewrite ^/article/nature/(.*) http://cutemsyu.com/article/natrue.html permanent
   重寫之后訪問的URL為http://cutemsyu.com/article/nature.html?id=22341
   也就是說(shuō)原有的參數(shù)部分它會(huì)自動(dòng)補(bǔ)上
   rewrite ^/article/nature/(.*) http://cutemsyu.com/article/natrue.html? permanent
   重寫之后的URL為http://cutemsyu.com/article/nature.html,沒有原來(lái)的參數(shù)部分
    
3.4.3 防盜鏈

通常為了加快客戶端訪問資源響應(yīng)時(shí)間,服務(wù)器不會(huì)一次性將全部資源響應(yīng)給客戶端,首先傳回網(wǎng)頁(yè)的文本內(nèi)容,當(dāng)客戶端解析文本內(nèi)容中的圖片、視頻等資源時(shí)會(huì)再次向服務(wù)器發(fā)起請(qǐng)求。當(dāng)某個(gè)站點(diǎn)將圖片鏈接指向其他服務(wù)器,給其他服務(wù)器造成負(fù)擔(dān),這就是非法的盜鏈行為。我們?cè)诖罱ǚ?wù)站點(diǎn)時(shí)要有意識(shí)防范盜鏈行為。
http協(xié)議頭部中referer頭域表示訪問當(dāng)前資源的源地址,根據(jù)referer中的源地址URL來(lái)判斷是否來(lái)自本站,如非本站的地址,采取阻斷措施防止盜鏈。


syntax: valid_referers none | blocked | server_names | string ...;
context: server,location;

valid_referers 指令根據(jù)規(guī)則檢測(cè)頭域中referer中值是否合法,如果非法內(nèi)嵌變量 $invalid_referer 值為1.
參數(shù)含義:

none,表示檢測(cè)referer為空的情況

blocked,表示檢測(cè)referer的值被防火墻或者代理服務(wù)器刪除的情況,通常referer的值不以http://或https:// 開頭

server_names,referer的值應(yīng)該被包含在server_name中

string,定義字符串形式。

開始或尾部帶有通配符*

正則表達(dá)式,以~引導(dǎo),匹配http://后面的內(nèi)容

Example:

#如果發(fā)現(xiàn)盜鏈,重寫鏈接為指定的表示禁止盜用的圖片
server {
    listen 80;
    server_name v.cutemsyu.com;
    location ~* ^.+.(gif|jpg|png|flv|mp4|swf)$ {
        valid_referers none blocked server_names *.cutemsyu.com ~.google.
        if ($invalid_referer) {
            rewrite ^/ http://v.cutemsyu.com/images/forbbiden.jpg
        }
    }
}
4、gzip壓縮

壓縮文本數(shù)據(jù),提升網(wǎng)絡(luò)響應(yīng)速度,作為靜態(tài)服務(wù)器使用很有必要開啟,壓縮文本將節(jié)省大量帶寬,同時(shí)提升響應(yīng)速度。但是如果作為反向代理服務(wù)器則需要考慮,壓縮功能是否應(yīng)該由后端服務(wù)器承擔(dān),以此減輕前端服務(wù)器CPU壓力。

4.1 ngx_http_gzip_module

該模塊功能是對(duì)指定類型數(shù)據(jù)使用gzip方法壓縮
作用域Context: http, server, location

gzip on |off;

此模塊gzip功能啟用或禁用

gzip_types mime-types ... ;

壓縮過(guò)濾器,僅對(duì)指定的MIME類型進(jìn)行壓縮處理

gzip_comp_level level;

設(shè)置壓縮級(jí)別1-9,默認(rèn)值為1壓縮速率最快,壓縮比最低

gzip_min_length length;

啟用壓縮功能的響應(yīng)報(bào)文大小閾值,小于該置不進(jìn)行壓縮。防止有些小數(shù)據(jù)壓縮之后更大的情況,推薦值為1024

gzip_buffers number size;

壓縮數(shù)據(jù)使用緩沖區(qū)大小,size默認(rèn)為內(nèi)存分頁(yè)大小

gzip_disable regex;

舊版本的瀏覽器對(duì)于gzip功能支持不完善,對(duì)于該指令配置的正則信息與瀏覽器類型匹配,匹配成功的響應(yīng)不進(jìn)行壓縮處理

gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;

nginx作為反向代理服務(wù)器接收后端服務(wù)器響應(yīng)結(jié)果壓縮控制

4.2 ngx_http_gunzip_module

解壓模塊,該模塊對(duì)于不支持壓縮功能的瀏覽器請(qǐng)求,響應(yīng)結(jié)果如果被壓縮則將其解壓后返回給客戶端。適用于某些以gzip方式壓縮過(guò)存儲(chǔ)的數(shù)據(jù)。
作用域Context: http, server, location
提示該模塊不是默認(rèn)編譯內(nèi)容,編譯選項(xiàng)--with-http_gunzip_module

gunzip on |off ;
是否開啟該模塊功能

gunzip buffers number size;

用于解壓數(shù)據(jù)使用的緩沖區(qū)空間配置

4.3 ngx_http_gzip_static_module

靜態(tài)壓縮模塊,該模塊允許發(fā)送預(yù)壓縮數(shù)據(jù),如果客戶端請(qǐng)求的數(shù)據(jù)已被壓縮過(guò),且客戶端支持gzip壓縮,則直接返回壓縮數(shù)據(jù)。
作用域Context: http, server, location
提示該模塊不是默認(rèn)編譯內(nèi)容,編譯選項(xiàng)--with-http_gzip_static_module

gzip_static on | off ;
是否開啟該模塊

gzip_disable regex;
對(duì)于適配瀏覽器類型禁止gzip功能

4.4 配置示例
gzip on;
gzip_comp_level 3;
gzip_types text/html text/css text/xml text/plain application/javascript;
gzip_min_length 1024;
gzip_disable "MISE [4-6].";
gzip_buffers 8 16K;
gunzip on;         #支持自動(dòng)解壓功能
5、ssl模塊

HTTP協(xié)議屬于明文協(xié)議,通過(guò)抓包就可獲取一些隱私數(shù)據(jù)。HTTPS經(jīng)由超文本傳輸協(xié)議HTTP通信,但是數(shù)據(jù)包由SSL/TLS 安全協(xié)議加密,實(shí)現(xiàn)加密數(shù)據(jù)與認(rèn)證功能。
ngx_http_ssl_module 該模塊指令定義https相關(guān)設(shè)置:證書文件,私鑰文件,ssl會(huì)話緩存等內(nèi)容。
作用域Context: http, server

5.1 指令介紹
 1. ssl on | off;
 設(shè)定虛擬主機(jī)是否啟用HTTPS協(xié)議
 2. ssl_certificate file;
 指定當(dāng)前虛擬主機(jī)使用的PEM格式的證書文件
 3. ssl_certificate_key file;
 指定當(dāng)前虛擬主機(jī)上與其證書相匹配的私鑰文件
 4. ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
 支持ssl協(xié)議版本,默認(rèn)為后三個(gè)
 5. ssl_session_cache off | none | [builtin[:size]] [ shared:name:size ];
 ssl會(huì)話緩存設(shè)置。
 builtin[:size] --使用OpenSSL內(nèi)建的緩存,此緩存為每worker私有。容易產(chǎn)生內(nèi)存碎片不推薦。
 shared:name:size --worker之間共享的緩存區(qū)域,size單位為bytes,1MB可存儲(chǔ)4000個(gè)會(huì)話;name為共享緩存區(qū)域名稱,多個(gè)虛擬主機(jī)可使用同一個(gè)共享緩存區(qū)。
 6. ssl_session_timeout time;
 客戶端可重復(fù)使用會(huì)話參數(shù)的超時(shí)時(shí)長(zhǎng)。默認(rèn)5分鐘

Example:

server {
                listen 443 ssl;
                server_name www.cutemsyu.com;
                root /website/ssl/htdocs;
                ssl on;
                ssl_certificate /etc/nginx/ssl/nginx.crt;
                ssl_certificate_key /etc/nginx/ssl/nginx.key;
                ssl_session_cache shared:sslcache:15m;
                ssl_session_timeout 3m;
            }
5.2 基于域名的HTTPS虛擬主機(jī)

值得考慮的一個(gè)問題是如何實(shí)現(xiàn)多個(gè)HTTPS虛擬主機(jī)監(jiān)聽在同一IP地址上。
情況一:每個(gè)虛擬主機(jī)使用各自的證書文件,如下

server {
    listen          443 ssl;
    server_name     www.example.com;
    ssl_certificate www.example.com.crt;
    ...
}

server {
    listen          443 ssl;
    server_name     www.example.org;
    ssl_certificate www.example.org.crt;
    ...
}

如此配置的話,客戶端訪問這兩個(gè)站點(diǎn)建立SSL會(huì)話時(shí)收到的都是默認(rèn)主機(jī)的證書文件。該問題是由于SSL協(xié)議造成的,SSL鏈接在客戶端發(fā)送HTTP請(qǐng)求之前建立起來(lái)的,然而nginx并不知道所請(qǐng)求的服務(wù)主機(jī)名,因此返回默認(rèn)服務(wù)器證書文件。
解決方法一:
多個(gè)HTTPS虛擬主機(jī)使用同一證書文件和私鑰文件,證書和私鑰配置指令在http級(jí)別設(shè)定,server共享其配置

ssl_certificate     common.crt;
ssl_certificate_key common.key;

server {
    listen          443 ssl;
    server_name     www.example.com;
    ...
}

server {
    listen          443 ssl;
    server_name     www.example.org;
    ...
}

解決辦法二:
更通用的辦法是使用TLS Server Name Indication extension技術(shù),即SNI。SNI允許在客戶端建立SSL會(huì)話時(shí)傳遞請(qǐng)求服務(wù)器名稱,這樣服務(wù)器就會(huì)知道該發(fā)送哪個(gè)虛擬主機(jī)下的證書文件。該技術(shù)需要瀏覽器支持,一般主流瀏覽器都已支持

Opera 8.0;

MSIE 7.0 (but only on Windows Vista or higher);

Firefox 2.0 and other browsers using Mozilla Platform rv:1.8.1;

Safari 3.2.1 (Windows version supports SNI on Vista or higher);

and Chrome (Windows version supports SNI on Vista or higher, too)

同時(shí)確保nginx支持SNI功能:

$ nginx -V
...
TLS SNI support enabled
...

本篇文章到此結(jié)束,下篇總結(jié)nginx反向代理,fastcgi模塊,感謝關(guān)注!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/39437.html

相關(guān)文章

  • 前端nginx使用札記

    摘要:它是一個(gè)高性能的和反向代理服務(wù)器,同時(shí)也可以作為的代理服務(wù)器。如果相對(duì)域名或參數(shù)字符串起作用,可以使用全局變量匹配,也可以使用反向代理。 nginx是什么? nginx是俄羅斯人 Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點(diǎn)開發(fā)的一個(gè)十分輕量級(jí)的HTTP服務(wù)器。它是一個(gè)高性能的HTTP和反向代理服務(wù)器,同時(shí)也可以作為IMAP/POP3/SMTP的代理服務(wù)器。ngi...

    tianren124 評(píng)論0 收藏0
  • nginx 常用配置記錄

    摘要:如果狀態(tài)碼附帶文字段落,該文本將被放置在響應(yīng)主體。相反,如果狀態(tài)碼后面是一個(gè),該將成為頭部值。沒有狀態(tài)碼的將被視為一個(gè)狀態(tài)碼,這種情況下需要以或者開頭。因?yàn)楹筒荒芎?jiǎn)單的只返回狀態(tài)碼,還必須有重定向的,這就是指令無(wú)法返回的原因了。 HTTP模塊(核心模塊,也是主要用到的模塊) server模塊 server模塊是http的子模塊,它用來(lái)定義一個(gè)虛擬主機(jī) 例子: server { ...

    Youngs 評(píng)論0 收藏0
  • nginx安裝配置|nginx負(fù)載均衡|nginx反向代理|gzip壓縮|expires緩存

    摘要:是一款輕量級(jí)的服務(wù)器反向代理服務(wù)器及電子郵件代理服務(wù)器,并在一個(gè)協(xié)議下發(fā)行。是以反向代理的方式進(jìn)行負(fù)載均衡的。 Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個(gè)BSD-like 協(xié)議下發(fā)行。由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開發(fā),供俄國(guó)大型的入口網(wǎng)站及搜索引擎Rambler(俄文:Рамблер)使用。其特點(diǎn)是占有內(nèi)存...

    pkhope 評(píng)論0 收藏0
  • 關(guān)于如何快速調(diào)教Nginx的幾點(diǎn)總結(jié)

    摘要:關(guān)于如何快速調(diào)教的幾點(diǎn)總結(jié)關(guān)于的好與壞,我覺得沒有必要去介紹了,在這里主要分享一下我在實(shí)際的項(xiàng)目部署中是如何快速的調(diào)教的。 關(guān)于如何快速調(diào)教N(yùn)ginx的幾點(diǎn)總結(jié) 關(guān)于Nginx的好與壞,我覺得沒有必要去介紹了,在這里主要分享一下我在實(shí)際的項(xiàng)目部署中是如何快速的調(diào)教N(yùn)ginx的。其中分享的源碼大家可以作為模板代碼,根據(jù)自身項(xiàng)目的實(shí)際情況,酌情使用。 這里簡(jiǎn)單的說(shuō)一說(shuō)我為什么要寫這篇文章,...

    yacheng 評(píng)論0 收藏0
  • Nginx

    摘要:主進(jìn)程不直接響應(yīng)瀏覽器,是管理子進(jìn)程使用。瀏覽器訪問會(huì)到子進(jìn)程中響應(yīng)。日志需要備份,文件在被進(jìn)程所打開,不能使用命令。是設(shè)置變量使用,可以達(dá)到多條件判斷時(shí)做標(biāo)記使用。 nginx 簡(jiǎn)介 高性能WEB服務(wù)器 Nginx (engine x) 是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器.Nginx 是由Igor Sysoev為落實(shí)訪問量第二...

    luck 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<