Nginx 進階 (ssl、fpm、rewrite、cache配置等)

Nginx(與ssl結合配置https網站、rewrite,fastcgi配置詳解)

前言

前面已經介紹過Nginx的一些基礎概念,還有幾個比較重要的模塊:利用ssl給會話加密,利用rewrite功能靈活改寫訪問結果,以及利用fastcgi與php模塊結合等等。

一、配置https網站

1、自建CA

(1)生成私鑰文件

mkdir -p /etc/pki/CA/private #創建私鑰保存的目錄

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) #創建私鑰

ll /etc/pki/CA/private/ # 私鑰只能自己保存,對保密性要求高

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

(2)生成自簽證書

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 7300

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

(3)為CA提供所需的目錄和文件

touch /etc/pki/CA/index.txt # 創建數據庫文件

echo 01 > /etc/pki/CA/serial # 創建序列號文件并給明第一個證書的序列號碼

ll /etc/pki/CA

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

CA創建完成

2、證書申請

(1)在證書申請的主機上生成私鑰

cd /etc/nginx/

mkdir ssl #創建保存私鑰的目錄

cd ssl

(umask 077;openssl genrsa -out nginx.key 2048)

ll

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

(2)生成證書簽署請求

openssl req -new -key nginx.key -out nginx.csr -days 365

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

(3)把請求發送給CA,因為這是本機,就不發了。

(4)CA簽發證書

openssl ca -in /etc/nginx/ssl/nginx.csr -out /etc/nginx/ssl/nginx.crt -days 365

報錯如下:

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

說明我們生成自簽證書沒做好,上去檢查那一步,發現什么事情,我們的自簽證書生成到root目錄下了。所以再來一次絕對路徑的:openssl req -new -key /etc/pki/CA/private/cakey.pem -days 365 -x509 -out /etc/pki/CA/cacert.pem

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

再試試:結果如下

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

cd /etc/nginx/ssl 看一下:

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

3、配置/etc/nginx/nginx.conf

vim /etc/nginx/nginx.conf

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

檢查,重啟,測試

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

最后說一下幾個配置項的含義:具體見官網ngx——http——ssl——moudle模塊

SSL on|off  ;是否啟用ssl功能
SSL certificate ; 指明當前主機的證書文件
SSL_certificate ; 當前虛擬主機使用的證書問價
SSL_certificate ;當前虛擬主機使用的證書文件中的公鑰配對的私鑰文件路徑

SSL_protocols  ssl會話的協議版本,sslv2不安全,最好使用最新版本
SSL_session_cache 指明SSL會話緩存機制
SSL_session_timeout time; ssl會話超時時長

二、rewrite模塊配置(很重要)

官方文檔在http://nginx.org/en/docs/http/ngxhttprewrite_module.html

用法:rewrite regex replacement [flag];

把用戶請求的URL基于regex做檢查,匹配到時將替換為replacement指定的字符串;

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

在同一個location中存在的多個rewrite規則會自上而下逐個被檢查,可以使用flag控制此循環功能

[flag]:重寫完成后停止對當前url在當前location中的后續其他重寫操作,改為新的url進行新的一輪處理。

last:提前結束本輪循環,進入下一輪,continue
break:終止了,不再循環
redirect:重定向,臨時重定向,302
permanent:永久重定向,301,重寫后生成的新url給客戶端,由客戶端對新url進行請求

例如:
    location / {

        rewrite (.*)\.txt$ $1.html;
        }
請求的txt文件都變成html,重寫,變成一個新的url,然后被下面的匹配。

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

再加上:
    location ~*\.html\$ {
        rewrite (.*)\.html $1.txt;
        }
后,html又轉化為txt了,就形成一個死循環,所以要在兩個后面加上條件,break。

然后再加上個redirect,臨時重定向
location / {

            rewrite (.*)\.txt$ $1.html redirect;
            }

Nginx 進階 (ssl、fpm、rewrite、cache配置等)這個狀態值有兩個階段,第一階段是一個正常的返回值200,第二階段是一個臨時的重定向。如果用permanet,返回值就是301,重寫后生成一個新的url返回給客戶端,有客戶端對新url進行請求。

if:只能用在server和location中,條件判斷句,在條件滿足時,執行配置塊終端的配置,引入一個新的配置上下文


condition:比較表達式 == ,!=

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

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

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

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

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


return:

return code [text];

return code url;

return url;


gzip :過濾,對指定類型的資源壓縮傳輸以節約帶寬

gzipcomplevel level;指定壓縮比:1-9

gzip,disable regex ……;regex是匹配客戶端瀏覽器類型的模式,表示對所有匹配的瀏覽器不執行壓縮響應。

gzipminlength length;觸發啟用壓縮功能響應報文的最小長度

gziphttpversion 1.0|1.1;設定啟用壓縮響應功能時協議的最小版本

gziptypes mimetype …;指定僅執行壓縮的資源內容類型,默認為text/html;


三、fastcgi模塊,LNMP

php編譯時要支持fpm;php—fpm工作方式類似于httpd的prefork模式

安裝:yum -y install php-fpm php-mysql php-mbstring php-gd php-xml

啟動:systemctl start php-fpm.service

修改nginx.conf配置文件

一個動態請求,將請求的變量值保存在前端(nginx)的一個參數里,這個變量值向后端發起請求(代理作用),要通過fastcgi_params這個文件傳遞,后端主機在什么地方就要改為什么

    fastcgi_param

配置如下:

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

測試代碼如下:編輯在/web/html下的info.php文件:<?php phpinfo(); ?>

結果如下:

Nginx 進階 (ssl、fpm、rewrite、cache配置等)

一下是其他配置項,詳情請看官方文檔:

fastcgi cache file :緩存要及時清理和更新

fastcgi_cache_path 先定義緩存空間
    path:文件路徑
    levels:級別,每一級的數字只有1和2
        levels=1:2,表示16個一級子目錄,每個一級子目錄下面有252個2級子目錄

key_zone=name:size  內存中用于緩存k/v映射關系的空間名稱及大小

inactive = time 非活動時間

max_size=size:定義此路徑下的多大空間用于緩存數據;

注意:只能定義在http上下文

fastcgi_cache zone |off  是否啟用cache,若啟用數據緩存于哪個cache

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

(1)
N24_yeziN24_yezi
上一篇 2016-12-26
下一篇 2016-12-26

相關推薦

  • 關于 開機啟動加密破壞修復 自制linux系統

         開機破壞并且修復之       自制linux系統                CentOS 6啟動流程: POST –> Boot Sequence(BIOS) –&…

    系統運維 2016-09-14
  • shell腳本編程之數組

    bash僅支持一維數組,類型聲明: declare -i    : 表示數值 declare -a  :表示普通數組(默認,可不用聲明類型) declare -A :表示關聯數組(必須聲明類型,bash需4.0以上版本才支持,可通過bash –version查看版本) 一、普通數組(用數字為下標) 1.1數組賦值(修…

    Linux干貨 2015-08-24
  • iptables初探

    iptables 簡述 基礎知識 命令使用 簡述 iptables是什么?netfilter又是什么? iptables是位于用戶控件的一個防火墻規則控制管理工具。netfilter是位于內核中的真正的防火墻,由五個鉤子函數(hooks)而組成。 iptables的作用是什么? 用來添加,刪除,管理netfilter規則。 netfilter的作用是什么? …

    2016-05-31
  • linux系統文件的元數據

    linux系統文件的元數據 什么是元數據 文件的數據分兩種: 一種元數據,既屬性數據:metadata 一種就是數據本身:data 如何查看元數據: stat stat命令用于顯示文件的狀態信息 [root@localhost ~]# stat /tmp/mylinux File: ‘/tmp/mylinux’ Size: 143 Blocks: 0 IO …

    Linux干貨 2018-03-11
  • linux進程管理相關工具

    linux進程管理相關工具: pstree ,ps ,pidof ,pgrep ,top ,htop ,glances ,pmap ,vmstat ,kill ,killall ,job ,bg ,fg ,nohup ,nice ,renice ,pkill…… 1、pstree:查看進程樹 2、ps:顯示執行命令時間的進程狀態信息 /proc 目錄下存放內…

    Linux干貨 2016-09-11
  • lvs三種基礎模型

    1: LVS-DR 模式(調度器與實際服務器都有一塊網卡連在同一物理網段上)簡要的網絡結構如下所示 lvs-DR模型是lvs的默認模型,也是企業中用到的最多的模型    解讀:直接路由模型,每個Real Server上都有兩個IP:VIP和RIP,但是VIP是隱藏的,就是不能提高解析等功能,只是用來做請求回復的源IP的,Director上…

    Linux干貨 2016-08-15

評論列表(1條)

  • N24_Jerry
    N24_Jerry 2016-12-26 20:24

    班長好勤奮,學習楷模啊

欧美性久久久久