Nginx配置進階

目錄

  • ngx_http_rewrite_module模塊

  • ngx_http_gzip_module模塊

  • ngx_http_fastcgi_module模塊

  • ngx_http_ssl_module模塊

  • ngx_http_referer_module模塊

ngx_http_rewrite_module模塊

將用戶某一次請求的URI當中的字符串是不是能夠被我們給出的regex所描述的模式所匹配,如果能,則替換為新的URL

1、rewrite

語法格式:rewrite regex replacement [flag] 
    Default: — 
    Context: server, location, if

將用戶請求的URI基于regex所描述的模式進行檢查,匹配到時將其替換為replacement指定的新的URI; 


注意:如果在同一級配置塊中存在多個rewrite規則,那么會自上而下逐個檢查;被某條件規則替換完成后,會重新一輪的替換檢查,因此,隱含有循環機制;[flag]所表示的標志位用于控制此循環機制; 


如果replacement是以http://或https://的絕對路徑開頭,則替換結果會直接以重定向返回給客戶端;

[flag]: 
    last:重寫完成后停止對當前URI在當前location中后續的其它重寫操作,而后對新的URI啟動新一輪重寫檢查;提前重啟新一輪循環;

    break:重寫完成后停止對當前URI在當前location中后續的其它重寫操作,而后直接跳轉至重寫規則配置塊之后的其它配置;結束循環;

    redirect:重寫完成后以臨時重定向方式直接返回重寫后生成的新URI給客戶端,由客戶端重新發起請求;不能以http://或https://開頭;

    permanent:重寫完成后以永久重定向方式直接返回重寫后生成的新URI給客戶端,由客戶端重新發起請求;

2、return

語法:return code [text]; 
    return code URL; 
    return URL; 
    Default: — 
    Context: server, location, if

停止處理并將指定的代碼返回給客戶端

3、rewrite_log

語法:rewrite_log on | off; 
    Default: rewrite_log off; 
    Context: http, server, location, if

是否開啟重寫日志

4、if

語法:if (condition) { … } 
    Default: — 
    Context: server, location

引入一個新的配置上下文 ;條件滿足時,執行配置塊中的配置指令;server, location;

condition: 
    比較操作符: 
        == 
        != 
        ~:模式匹配,區分字符大小寫; 
        ~*:模式匹配,不區分字符大小寫; 
        !~:模式不匹配,區分字符大小寫; 
        !~*:模式不匹配,不區分字符大小寫; 

    文件及目錄存在性判斷: 
        -e, !-e 
        -f, !-f 
        -d, !-d 
        -x, !-x

5、set

語法:set $variable value; 
    Default: — 
    Context: server, location, if

用戶自定義變量

6、break

語法:Syntax: break; 
    Default: — 
    Context: server, location, if

停止處理當前ngx_http_rewrite_module指令集。

簡單示例

W53JV@~]V{FX}9MN%GV9ZEJ.png

20IC`}8}I3{8`ZDW@YXEE5Q.png

ngx_http_gzip_module模塊

ngx_http_gzip_module模塊是一個過濾器,壓縮響應使用“gzip”方法。這往往有助于減少一半或更多的傳輸數據的大小。

1、gzip

語法:gzip on | off; 
    Default: gzip off; 
    Context: http, server, location, if in location

是否開啟gzip功能

2、gzip_comp_level

語法:gzip_comp_level level; 
    Default: gzip_comp_level 1; 
    Context: http, server, location

指定壓縮比,1-9

3、gzip_disable

語法:gzip_disable regex …; 
    Default: — 
    Context: http, server, location

對被指定的模式所匹配到的瀏覽器禁用gzip功能

4、gzip_min_length

語法:gzip_min_length length; 
    Default: gzip_min_length 20; 
    Context: http, server, location

啟用壓縮功能的響應報文最小長度

5、gzip_buffers

語法:gzip_buffers number size; 
    Default: gzip_buffers 32 4k|16 8k; 
    Context: http, server, location

支持實現壓縮功能時為其配置的緩沖區數量及每個緩存區的大小;

6、gzip_proxied

語法:gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any …; 
    Default: gzip_proxied off; 
    Context: http, server, location

nginx作為代理服務器接收到從被代理服務器發送的響應報文后,在何種條件下啟用壓縮功能的; 
off:對代理的請求不啟用 
no-cache, no-store,private:表示從被代理服務器收到的響應報文首部的Cache-Control的值為此三者中任何一個,則啟用壓縮功能;

7、gzip_types

語法:gzip_types mime-type …; 
    Default: gzip_types text/html; 
    Context: http, server, location

壓縮過濾器,僅對此處設定的MIME類型的內容啟用壓縮功能;

8、gzip_vary

語法:gzip_vary on | off; 
    Default: gzip_vary off; 
    Context: http, server, location

如果啟用了gzip功能是否在響應報文首部添加Vary: Accept-Encoding項

配置示例

~8(9L]8ZY544JIF7ODR9CEP.png

Z_7`VY376}E7Y%MLFKP(WRN.png

ngx_http_fastcgi_module模塊

ngx_http_fastcgi_module模塊允許通過請求FastCGI服務器,將動態頁面發送至FastCGI服務器解釋執行

1、fastcgi_pass

語法:fastcgi_pass address; 
    Default: — 
    Context: location, if in location

fastcgi服務器IP地址

2、fastcgi_index

語法:fastcgi_index name; 
    Default: — 
    Context: http, server, location

fastcgi默認的主頁資源;

3、fastcgi_param

語法:fastcgi_param parameter value [if_not_empty]; 
    Default: — 
    Context: http, server, location

設置一個參數,將此參數傳遞給FastCGI服務器。該值可以包含文本、變量和它們的組合。

配置php-fpm示例

1.安裝php-fpm和mysql
[root@centos7 ~]# yum -y install php-fpm mariadb-server
2.Nginx配置文件

@NQ(`1[ASMH2`$AL[OE(J2T.png

3.測試訪問

FRN7VMRHNMV}ZV93C~PVFTP.png

5T05HW0PH5HCNFYLATZK9[L.png

4、fastcgi_cache_path

語法:fastcgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time]; 
    Context: http

定義fastcgi的緩存;緩存位置為磁盤上的文件系統,由path所指定路徑來定義;

    levels=levels:緩存目錄的層級數量,以及每一級的目錄數量;levels=ONE:TWO:THREE 
        leves=1:2:2 
    keys_zone=name:size 
        k/v映射的內存空間的名稱及大小 
    inactive=time 
        非活動時長 
    max_size=size 
        磁盤上用于緩存數據的緩存空間上限

5、fastcgi_cache

語法:fastcgi_cache zone | off; 
    Default: fastcgi_cache off; 
    Context: http, server, location

調用指定的緩存空間來緩存數據;http, server, location

6、fastcgi_cache_key

語法:fastcgi_cache_key string; 
    Default: — 
    Context: http, server, location

定義用作緩存項的key的字符串;

7、fastcgi_cache_methods

語法:fastcgi_cache_methods GET | HEAD | POST …; 
    Default: fastcgi_cache_methods GET HEAD; 
    Context: http, server, location

為哪些請求方法使用緩存;

8、fastcgi_cache_min_uses

語法:astcgi_cache_min_uses number; 
    Default: fastcgi_cache_min_uses 1; 
    Context: http, server, location

緩存空間中的緩存項在inactive定義的非活動時間內至少要被訪問到此處所指定的次數方可被認作活動項;

9、fastcgi_cache_valid

語法:fastcgi_cache_valid [code …] time; 
    Default: — 
    Context: http, server, location

不同的響應碼各自的緩存時長;

10、fastcgi_keep_conn

語法:fastcgi_keep_conn on | off; 
    Default: fastcgi_keep_conn off; 
    Context: http, server, location

默認情況下,一個FastCGI服務器將發送響應后關閉連接正確。然而,當這個指令設置的值,Nginx會指示一個FastCGI服務器保持連接打開。

fastcgi_cache配置示例

1.Nginx配置文件
7UFD08SX6(]KD{%KYGC7MVX.png

%K_8FFSW7Y0QM70{JD%WP}L.png

2.啟用緩存功能前做壓測
3L)P{7@)@W3NH@YT5VAFG8A.png
3.啟用緩存功能后做壓縮
KB~E@3IO2$7OLX)UX9XQFCI.png
4.生成緩存文件

[A$$7{J{CR~W8DZEM`$FPLA.png

ngx_http_ssl_module模塊

ngx_http_ssl_module模塊提供HTTPS功能支持

1、ssl

語法:ssl on | off; 
    Default: ssl off; 
    Context: http, server

是否開啟ssl功能

2、ssl_certificate

語法:ssl_certificate file; 
    Default: — 
    Context: http, server

當前虛擬主機使用PEM格式的證書文件;

3、ssl_certificate_key

語法:ssl_certificate_key file; 
    Default: — 
    Context: http, server

當前虛擬主機上與其證書匹配的私鑰文件;

4、ssl_protocols

語法:ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2]; 
    Default: ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    Context: http, server

支持ssl協議版本,默認為后三個;

5、ssl_session_cache

語法:ssl_session_cache off | none | [builtin[:size]] [shared:name:size]; 
    Default: ssl_session_cache none; 
    Context: http, server

builtin[:size]:使用OpenSSL內建的緩存,此緩存為每worker進程私有;

[shared:name:size]:在各worker之間使用一個共享的緩存;

6、ssl_session_timeout

語法:ssl_session_timeout time; 
    Default: ssl_session_timeout 5m; 
    Context: http, server

客戶端一側的連接可以復用ssl session cache中緩存 的ssl參數的有效時長;

ssl配置示例

1.CA配置
IER37)V1[O`62D3K}]Y5B[J.png
2.nginx端生成簽署請求
{YLZUTG~2FTP2$KPME{1Q`F.png
3.CA簽證

`JLE)O@$}YAXN61HR3@UK3G.png

4.Nginx配置文件

5EBSJ$~V]R8O6K$A$GER77V.png

5.測試

6MTNY65{Y%VI6FZPYW[Y[[K.png

_YAEL7IHNN`~BOTT8_0A)L4.png

ngx_http_referer_module模塊

ngx_http_referer_module模塊是用來阻止訪問一個在referer頭域值無效請求的網站。

1、valid_referers

語法:valid_referers none | blocked | server_names | string …; 
    Default: — 
    Context: server, location

定義referer首部的合法可用值;

none:請求報文首部沒有referer首部; 
blocked:請求報文的referer首部沒有值; 
server_names:參數,其可以有值作為主機名或主機名模式; 
    arbitrary_string:直接字符串,但可使用*作通配符; 
    regular expression:被指定的正則表達式模式匹配到的字符串;要使用~打頭,例如 ~.*.magedu.com;

配置示例

valid_referers none block server_names *.magedu.com *.mageedu.com magedu.* mageedu.* ~\.magedu\.;

if($invalid_referer) {
   return 403;
}

原創文章,作者:zhai796898,如若轉載,請注明出處:http://www.www58058.com/57665

(0)
zhai796898zhai796898
上一篇 2016-11-05 15:22
下一篇 2016-11-05 19:11

相關推薦

  • N25-第八周作業

    第八周 1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主使用紅色顯示; #!/bin/bash # ip=172.16.250. for i in {1..254}; do if ping -w 1 -c 1 $ip$i &> /dev/n…

    Linux干貨 2017-03-09
  • 網絡班N22期第一周博客作業

    一、計算機的組成及功能。  計算機是由硬件系統和軟件系統兩部分組成的。 1、硬件系統包含:    (1)、主板。又叫主機板(mainboard)、系統板(systemboard)或母板(motherboard),它安裝在機箱內,是微機最基本的也是最重要的部件之一,主板一般為矩形電路板,上面安裝了組成計算機的主要電路系統,一般有B…

    Linux干貨 2016-08-15
  • FHS文件系統各目錄及功能

    FHS即:filesystem hierarchy standard 的縮寫,意思是文件系統目錄標準,Linux系統采用這種文件組織形式,這是一種樹形結構組織文件。如下圖, /bin : 此文件用于放置二進制執行文件。 在/bin底下的指令可以被root與一般賬號所使用,主要有:cat, chmod, chown, date, mv, mkdir,…

    Linux干貨 2016-10-17
  • Vsftpd+MySQL實現虛擬用戶驗證登錄

    一、安裝所需要包和包組: 在數據庫服務器上安裝包: yum –y install mariadb-server mariadb-devel systemctl start mariadb.service systemctl enable mariadb 在FTP服務器上安裝包pam_mysql centos7:無對應rpm包,需…

    Linux干貨 2017-08-14
  • Linux下的文件管理系統

    一、文件系統的FHS標準     因為Linux的屬于開源系統,開發人員多,為了統一開發標準,Linux有一個文件系統標準,也就是FHS(Filesystem HierarchyStandard)標準。有了這個標準,那些獨立的軟件開發商、系統開發人員以及系統的使用者就能方便的在系統上操作。 二、文件系統  &…

    Linux干貨 2016-08-02
  • 排錯

    把/etc/inittab  模式改為6模式 怎么修復 1 先把 vim /etc/inittab 打開 2 把/etc/inittab 模式改為6 3 reboot 4 在倒計時完之前按任意鍵 5按A進入 6 在quiet  命令后面寫入 3  模式 重啟 7把 vim /etc/inittab 打開 8 把/etc…

    Linux干貨 2017-05-15
欧美性久久久久