国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

JayChen / 428人閱讀

摘要:經由超文本傳輸協議通信,但是數據包由安全協議加密,實現加密數據與認證功能。該模塊指令定義相關設置證書文件,私鑰文件,會話緩存等內容。允許在客戶端建立會話時傳遞請求服務器名稱,這樣服務器就會知道該發送哪個虛擬主機下的證書文件。

1、nginx基本狀態信息頁面

配置示例:

location  /basic_status {
                            stub_status;
                        }

頁面展示含義:

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

Active connections: 活動狀態的連接數;
accepts:已經接受的客戶端請求的總數;
handled:已經處理完成的客戶端請求的總數;
requests:客戶端發來的總的請求數;
Reading:處于讀取客戶端請求報文首部的連接的連接數;
Writing:處于向客戶端發送響應報文過程中的連接數;
Waiting:處于等待客戶端發出請求的空閑連接數;
2、記錄請求日志

指令:

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區域定制日志格式
用法:log_format name string ...;
name指定一個格式名稱,string可以使用nginx核心模塊及其它模塊內嵌的變量指定格式。

2.2 access_log

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

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

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

2.3 open_log_file_cache

定義一個緩存保存活躍的日志文件描述符數據
用法:

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

max:緩存的最大文件描述符數量;
min_users:在inactive指定的時長內訪問大于等于此值方可被當作活動項;
inactive:非活動時長;
valid:驗證緩存中各緩存項是否為活動項的時間間隔;
配置示例:

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重寫

將用戶請求的URI基于regex所描述的模式進行檢查,而后完成替換;
URL重寫是一個非常有用的功能,如果一個網站在改進的過程中結構發生變化,無需客戶端更改已保存訪問地址仍可正常訪問;提升網站安全性,如放盜鏈行為。

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

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

[flag] 可用標識如下:

last:停止在當前區域繼續處理,將重寫的新URI在各location中重新處理;

break:將此處重寫的URI在本塊中繼續處理,但新的URI不會轉向其他location中處理;

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

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

Example:

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

#如果上面的rewrite規則寫在location中,則應該使用break標識,防止死循環,如果循環超過10此,返回500錯誤碼
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

停止處理并返回一個狀態碼給客戶端。

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

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

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

使用比較符判斷變量與字符串的邏輯關系

判斷文件或目錄存在情況

其中 比較操作符有:

=

!=

~ 模式匹配,區分字符大小寫

~* 模式匹配,不區分字符大小寫

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

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

文件及目錄存在性判斷:

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

-f, !-f 檢查一個文件是否存在

-d, !-d 檢查一個目錄是否存在

-x, !-x 檢查一個文件是否可執行

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的應用 3.4.1 域名跳轉

Example:

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

默認情況下nginx進行rewrite后都會自動添加舊地址中參數部分,在replacement末尾添加"?"即可屏蔽舊地址中的參數
Example:

   ##原來的訪問的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
   也就是說原有的參數部分它會自動補上
   rewrite ^/article/nature/(.*) http://cutemsyu.com/article/natrue.html? permanent
   重寫之后的URL為http://cutemsyu.com/article/nature.html,沒有原來的參數部分
    
3.4.3 防盜鏈

通常為了加快客戶端訪問資源響應時間,服務器不會一次性將全部資源響應給客戶端,首先傳回網頁的文本內容,當客戶端解析文本內容中的圖片、視頻等資源時會再次向服務器發起請求。當某個站點將圖片鏈接指向其他服務器,給其他服務器造成負擔,這就是非法的盜鏈行為。我們在搭建服務站點時要有意識防范盜鏈行為。
http協議頭部中referer頭域表示訪問當前資源的源地址,根據referer中的源地址URL來判斷是否來自本站,如非本站的地址,采取阻斷措施防止盜鏈。


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

valid_referers 指令根據規則檢測頭域中referer中值是否合法,如果非法內嵌變量 $invalid_referer 值為1.
參數含義:

none,表示檢測referer為空的情況

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

server_names,referer的值應該被包含在server_name中

string,定義字符串形式。

開始或尾部帶有通配符*

正則表達式,以~引導,匹配http://后面的內容

Example:

#如果發現盜鏈,重寫鏈接為指定的表示禁止盜用的圖片
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壓縮

壓縮文本數據,提升網絡響應速度,作為靜態服務器使用很有必要開啟,壓縮文本將節省大量帶寬,同時提升響應速度。但是如果作為反向代理服務器則需要考慮,壓縮功能是否應該由后端服務器承擔,以此減輕前端服務器CPU壓力。

4.1 ngx_http_gzip_module

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

gzip on |off;

此模塊gzip功能啟用或禁用

gzip_types mime-types ... ;

壓縮過濾器,僅對指定的MIME類型進行壓縮處理

gzip_comp_level level;

設置壓縮級別1-9,默認值為1壓縮速率最快,壓縮比最低

gzip_min_length length;

啟用壓縮功能的響應報文大小閾值,小于該置不進行壓縮。防止有些小數據壓縮之后更大的情況,推薦值為1024

gzip_buffers number size;

壓縮數據使用緩沖區大小,size默認為內存分頁大小

gzip_disable regex;

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

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

nginx作為反向代理服務器接收后端服務器響應結果壓縮控制

4.2 ngx_http_gunzip_module

解壓模塊,該模塊對于不支持壓縮功能的瀏覽器請求,響應結果如果被壓縮則將其解壓后返回給客戶端。適用于某些以gzip方式壓縮過存儲的數據。
作用域Context: http, server, location
提示該模塊不是默認編譯內容,編譯選項--with-http_gunzip_module

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

gunzip buffers number size;

用于解壓數據使用的緩沖區空間配置

4.3 ngx_http_gzip_static_module

靜態壓縮模塊,該模塊允許發送預壓縮數據,如果客戶端請求的數據已被壓縮過,且客戶端支持gzip壓縮,則直接返回壓縮數據。
作用域Context: http, server, location
提示該模塊不是默認編譯內容,編譯選項--with-http_gzip_static_module

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

gzip_disable regex;
對于適配瀏覽器類型禁止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;         #支持自動解壓功能
5、ssl模塊

HTTP協議屬于明文協議,通過抓包就可獲取一些隱私數據。HTTPS經由超文本傳輸協議HTTP通信,但是數據包由SSL/TLS 安全協議加密,實現加密數據與認證功能。
ngx_http_ssl_module 該模塊指令定義https相關設置:證書文件,私鑰文件,ssl會話緩存等內容。
作用域Context: http, server

5.1 指令介紹
 1. ssl on | off;
 設定虛擬主機是否啟用HTTPS協議
 2. ssl_certificate file;
 指定當前虛擬主機使用的PEM格式的證書文件
 3. ssl_certificate_key file;
 指定當前虛擬主機上與其證書相匹配的私鑰文件
 4. ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
 支持ssl協議版本,默認為后三個
 5. ssl_session_cache off | none | [builtin[:size]] [ shared:name:size ];
 ssl會話緩存設置。
 builtin[:size] --使用OpenSSL內建的緩存,此緩存為每worker私有。容易產生內存碎片不推薦。
 shared:name:size --worker之間共享的緩存區域,size單位為bytes,1MB可存儲4000個會話;name為共享緩存區域名稱,多個虛擬主機可使用同一個共享緩存區。
 6. ssl_session_timeout time;
 客戶端可重復使用會話參數的超時時長。默認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虛擬主機

值得考慮的一個問題是如何實現多個HTTPS虛擬主機監聽在同一IP地址上。
情況一:每個虛擬主機使用各自的證書文件,如下

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

如此配置的話,客戶端訪問這兩個站點建立SSL會話時收到的都是默認主機的證書文件。該問題是由于SSL協議造成的,SSL鏈接在客戶端發送HTTP請求之前建立起來的,然而nginx并不知道所請求的服務主機名,因此返回默認服務器證書文件。
解決方法一:
多個HTTPS虛擬主機使用同一證書文件和私鑰文件,證書和私鑰配置指令在http級別設定,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技術,即SNI。SNI允許在客戶端建立SSL會話時傳遞請求服務器名稱,這樣服務器就會知道該發送哪個虛擬主機下的證書文件。該技術需要瀏覽器支持,一般主流瀏覽器都已支持

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)

同時確保nginx支持SNI功能:

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

本篇文章到此結束,下篇總結nginx反向代理,fastcgi模塊,感謝關注!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39437.html

相關文章

  • 前端nginx使用札記

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

    tianren124 評論0 收藏0
  • nginx 常用配置記錄

    摘要:如果狀態碼附帶文字段落,該文本將被放置在響應主體。相反,如果狀態碼后面是一個,該將成為頭部值。沒有狀態碼的將被視為一個狀態碼,這種情況下需要以或者開頭。因為和不能簡單的只返回狀態碼,還必須有重定向的,這就是指令無法返回的原因了。 HTTP模塊(核心模塊,也是主要用到的模塊) server模塊 server模塊是http的子模塊,它用來定義一個虛擬主機 例子: server { ...

    Youngs 評論0 收藏0
  • nginx安裝配置|nginx負載均衡|nginx反向代理|gzip壓縮|expires緩存

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

    pkhope 評論0 收藏0
  • 關于如何快速調教Nginx的幾點總結

    摘要:關于如何快速調教的幾點總結關于的好與壞,我覺得沒有必要去介紹了,在這里主要分享一下我在實際的項目部署中是如何快速的調教的。 關于如何快速調教Nginx的幾點總結 關于Nginx的好與壞,我覺得沒有必要去介紹了,在這里主要分享一下我在實際的項目部署中是如何快速的調教Nginx的。其中分享的源碼大家可以作為模板代碼,根據自身項目的實際情況,酌情使用。 這里簡單的說一說我為什么要寫這篇文章,...

    yacheng 評論0 收藏0
  • Nginx

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

    luck 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<