成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Nginx-深度學(xué)習(xí)篇

Carson / 658人閱讀

摘要:深度學(xué)習(xí)篇一動(dòng)靜分離通過(guò)中間件將動(dòng)態(tài)請(qǐng)求和靜態(tài)請(qǐng)求進(jìn)行分離。原因分離資源,減少不必要的請(qǐng)求消耗,減少請(qǐng)求延時(shí)。關(guān)閉后,重定向會(huì)失效。驗(yàn)證規(guī)則保持一致。啟動(dòng),也會(huì)要求你輸入密碼。根據(jù)用戶的信息等信息區(qū)別根據(jù)用戶的地址實(shí)現(xiàn)灰度發(fā)布示意圖

Nginx-深度學(xué)習(xí)篇 一、動(dòng)靜分離
通過(guò)中間件將動(dòng)態(tài)請(qǐng)求和靜態(tài)請(qǐng)求進(jìn)行分離。
原因:分離資源,減少不必要的請(qǐng)求消耗,減少請(qǐng)求延時(shí)。

動(dòng)態(tài)和靜態(tài)請(qǐng)求圖例:

基本配置

upstream php_api{
    server 127.0.0.1:8080;
}
server {
    root filePath;
    location ~ .php$ {
        proxy_pass http://php_api;
        index index.html index.htm;
    }
    location ~ .(jpg|png|gif) {
        expires 1h;
        gzip on;
    }
}
二、Rewrite規(guī)則 1、場(chǎng)景:

URL訪問(wèn)跳轉(zhuǎn),支持開(kāi)發(fā)設(shè)計(jì)(頁(yè)面跳轉(zhuǎn)、兼容性支持、展示效果等)

SEO優(yōu)化

維護(hù)(后臺(tái)維護(hù)、流量轉(zhuǎn)發(fā)等)

安全

2、配置語(yǔ)法 rewrite

配置語(yǔ)法:rewrite regex replacement [flag];

默認(rèn):無(wú)

Context:server,location,if

示例: rewrite ^(.*)$ /pages/main.html break;

regex(正則)

Linux中pcregrep命令可以用來(lái)測(cè)試正則表達(dá)式。
| 元字符 |含義 |
. 匹配除換行符以外的任意字符
? 重復(fù)0次或1次
+ 重復(fù)1次或更多次
d 匹配數(shù)字
* 貪婪模式,有多少匹配多少
^ 匹配開(kāi)頭
$ 匹配結(jié)尾
{n} 重復(fù)n次
{n,} 重復(fù)n次或更多次
[c] 匹配單個(gè)字符c
[a-z] 匹配a-z小寫(xiě)字母的任意一個(gè)
轉(zhuǎn)移字符
( ) 用于匹配()之間的內(nèi)容,通過(guò)$1、$2調(diào)用

flag

flag 含義
last 停止rewrite檢測(cè)
break 停止rewrite檢測(cè)
redirect 返回302臨時(shí)重定向,地址欄會(huì)顯示跳轉(zhuǎn)后的地址
permanent 返回301永久重定向,地址欄會(huì)顯示跳轉(zhuǎn)后的地址

301永久重定向:除非用戶清理緩存,否則下次請(qǐng)求還是會(huì)請(qǐng)求到重定向

302臨時(shí)重定向:用戶下次請(qǐng)求還會(huì)經(jīng)過(guò)服務(wù)端重定向

last 和 break的區(qū)別:last會(huì)新建一個(gè)連接,往下繼續(xù)進(jìn)行匹配。break會(huì)直接停留在那一級(jí)。

redirect:關(guān)閉nginx后,重定向會(huì)失效。

permanent:關(guān)閉nginx,也會(huì)重定向到新的地址。

實(shí)例:
location / {
    # 文件不存在,直接訪問(wèn)4399
    if (!-f $request_filename) {
        rewrite ^/(.*)$ http://www.4399.com;
    }
}

優(yōu)先級(jí)

執(zhí)行server塊的rewrite指令

執(zhí)行l(wèi)ocation匹配

執(zhí)行選中的location中的rewrite

三、Nginx的高級(jí)模塊 1. secure_link_module模塊
(1)制定并允許檢查請(qǐng)求的鏈接的真實(shí)性以及保護(hù)資源免遭未經(jīng)授權(quán)的訪問(wèn)
(2)限制鏈接生效周期

圖例:

配置語(yǔ)法

secure_link

配置語(yǔ)法:secure_link expression;

默認(rèn):無(wú)

Context:http,server,location

secure_link_md5

配置語(yǔ)法:secure_link_md5 expression;

默認(rèn):無(wú)

Context:http,server,location

簡(jiǎn)單配置實(shí)例:

root /opt/app/code;

location / {
    secure_link $arg_md5,$arg_expires;
    secure_link_md5 "$secure_link_expires$uri 自定義字符串";

    if ($secure_link = "") {
        return 403;
    }
    if ($secure_link = "0") {
        return 410;
    }
}

生成url的腳本:

#!/bin/bash

servername="你的servername"
download_file="/download/test.img"
time_num=$(date -d "2018-10-18 00:00:00" +%s)
secure_num="自定義字符串"

res=$(echo -n "${time_num}${download_file} ${secure_num}"|openssl md5 -binary | open
ssl base64 | tr +/ -_ | tr -d =)

echo "http://${servername}${download_file}?md5=${res}&expires=${time_num}"
注意:1、生成腳本中自定義字符串和配置中的自定義字符串要保持一致。2、驗(yàn)證規(guī)則保持一致。3、如果沒(méi)有openssl,可以yum安裝。
2. geoip_module模塊
基于IP地址匹配MaxMine GeoIP二進(jìn)制文件,讀取IP所在地域信息。
默認(rèn)安裝的Nginx是沒(méi)有安裝geoip這個(gè)模塊的,安裝命令:
yum install nginx-module-geoip

使用場(chǎng)景:

區(qū)別國(guó)內(nèi)外做HTTP訪問(wèn)規(guī)則

區(qū)別國(guó)內(nèi)城市地域做HTTP訪問(wèn)規(guī)則

使用步驟:

安裝geoip:yum install nginx-module-geoip,安裝完成查看/etc/nginx/module目錄下,如果有對(duì)應(yīng)的so文件,則說(shuō)明安裝成功

在/etc/nginx/nginx.conf配置文件開(kāi)頭加入

load_module "modules/ngx_http_geoip_module.so";

load_module "modules/ngx_stream_geoip_module.so";

下載地域分區(qū)文件:

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

使用gunzip命令解壓下載下來(lái)的文件

配置示例

geoip_country /etc/nginx/geoip/GeoIP.dat;
geoip_city /etc/nginx/geoip/GeoLiteCity.dat;
server{
    location /myip {
        default_type text/plain;
        return 200 "$remote_addr $geoip_country_name $geoip_country_code $geoip_city";
    }
}
四、基于Nginx的HTTPS服務(wù) 1、為什么需要HTTPS

原因:HTTP不安全

傳輸數(shù)據(jù)被中間人盜用、信息泄露

數(shù)據(jù)內(nèi)容劫持、篡改

2、HTTPS協(xié)議的實(shí)現(xiàn)
對(duì)傳輸內(nèi)容進(jìn)行加密以及身份驗(yàn)證

對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密

HTTPS加密協(xié)議原理

客戶端在使用HTTPS方式與Web服務(wù)器通信的步驟

客戶使用https的URL訪問(wèn)Web服務(wù)器,要求與Web服務(wù)器建立SSL連接

Web服務(wù)器收到客戶端請(qǐng)求后,會(huì)將網(wǎng)站的證書(shū)信息(證書(shū)中包含公鑰)傳送一份給客戶端

客戶端的瀏覽器與Web服務(wù)器開(kāi)始協(xié)商SSL連接的安全等級(jí),也就是信息加密的等級(jí)

客戶端的瀏覽器根據(jù)雙方同意的安全等級(jí),建立會(huì)話密鑰,然后利用網(wǎng)站的公鑰將會(huì)話密鑰加密,并傳送給網(wǎng)站

Web服務(wù)器利用自己的私鑰解密出會(huì)話密鑰

Web服務(wù)器利用會(huì)話密鑰加密與客戶端之間的通信

通信原理圖:

3、證書(shū)簽名生成

準(zhǔn)備步驟:

確認(rèn)openssl有無(wú)安裝,openssl version

nginx有無(wú)編譯http-ssl-module,nginx -V

生成自簽證書(shū)步驟:

生成key密鑰

openssl genrsa -idea -out ronaldo.key 1024

生成證書(shū)簽名請(qǐng)求文件(csr文件)

openssl req -new -key ronaldo.key -out ronaldo.csr

當(dāng)提示輸入 A challenge password時(shí),表示ca文件需要更改的另外一個(gè)密碼,直接回車(chē)即可。

打包上面兩個(gè)步驟生成的文件發(fā)送給簽名機(jī)構(gòu)即可完成證書(shū)簽名

生成證書(shū)簽名文件(CA文件)

openssl x509 -req -days 3650 -in ronaldo.csr -signkey ronaldo.key -out ronaldo.crt

配置語(yǔ)法:

ssl

配置語(yǔ)法:ssl on | off;

默認(rèn):ssl off;

Context:http,server

ssl_certificate(crt文件所在位置)

配置語(yǔ)法:ssl_certificate file;

默認(rèn):無(wú)

Context:http,server

ssl_certificate_key(key文件所在位置)

配置語(yǔ)法:ssl_certificate_key file;

默認(rèn):無(wú)

Context:http,server

簡(jiǎn)單示例:

server {
    listen 443;
    server_name locahost;
    ssl on;
    ssl_certificate /etc/nginx/ssl_key/ronaldo.crt;
    ssl_certificate_key /etc/nginx/ssl_key/ronaldo.key;

    index index.html index.htm;
    location / {
        root /opt/app/code;
    }
}

配置完成后:

停止Nginx:nginx -s stop -c /etc/nginx/nginx.conf,會(huì)要求你輸入ronaldo.key的密碼。

啟動(dòng)Nginx:nginx -c /etc/nginx/nginx.conf,也會(huì)要求你輸入密碼。

查看是否啟用了443端口:netstat -luntp | grep 443

4、配置蘋(píng)果要求的證書(shū)

服務(wù)器所有的連接使用TLS1.2以上的版本(openssl 1.0.2)

版本:openssl version

自簽證書(shū)加密簽名算法類(lèi)型以及公鑰位數(shù):openssl x509 -noout -text -in ./ronaldo.crt

升級(jí)openssl的腳本

#!/bin/bash
cd /opt/download
wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
tar zxf openssl-1.0.2k.tar.gz
cd openssl-1.0.2k
./config --prefix=/usr/local/openssl
make && make install
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
openssl version -a

HTTPS證書(shū)必須使用SHA256以上哈希算法簽名

HTTPS證書(shū)必須使用RSA 2048位或ECC 256位以上公鑰算法

使用向前加密技術(shù)

通過(guò)自簽方式、符合蘋(píng)果要求、通過(guò)key文件直接生成crt文件:

openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout ronaldo.key -out ronaldo_apple.crt

-keyout參數(shù)會(huì)同時(shí)再生成一個(gè)key文件(沒(méi)有保護(hù)碼),reload Nginx就不用再次輸入密碼。

生成crt文件后,只需要修改配置文件即可

直接生成沒(méi)有保護(hù)碼的key:openssl rsa -in ./ronaldoold.key -out ./ronaldonew.key

5、HTTPS服務(wù)優(yōu)化

激活keepalive長(zhǎng)鏈接

在配置文件寫(xiě)入:keepalive_timeout 100

設(shè)置ssl session緩存

在配置文件寫(xiě)入:ssl_session_cache shared:SSL:10m

五、Nginx與Lua的開(kāi)發(fā)
Nginx+Lua優(yōu)勢(shì):
充分的結(jié)合Nginx的并發(fā)處理epoll優(yōu)勢(shì)和Lua的輕量實(shí)現(xiàn)簡(jiǎn)單的功能且高并發(fā)的場(chǎng)景。
1、Lua
是一個(gè)簡(jiǎn)潔、輕量、可擴(kuò)展的腳本語(yǔ)言

安裝:yum install lua

運(yùn)行:

lua命令進(jìn)入交互界面,輸入:print("Hello World")即可

執(zhí)行l(wèi)ua腳本:

#!/usr/bin/lua
print("Hello world")

注釋

- - 行注釋

- -[[塊注釋- -]]

變量

a = "alon123""

a = "alon123""

a = "97lo1004923""

a = [[alo

123"]]

上述是同一個(gè)意思,第三點(diǎn)用的是ASCII表

注意:
Lua數(shù)值類(lèi)型只有double類(lèi)型
Lua布爾類(lèi)型只有nil和false是false,數(shù)字0、空字符串都是true
Lua中的變量如果沒(méi)有特殊說(shuō)明,全是全局變量;如果希望是局部變量,簽名加個(gè)local
Lua沒(méi)有++或是+=這樣的操作
~=:不等于
..:字符串拼接
io庫(kù)的分別從stdin和stdout讀寫(xiě)的read和write函數(shù)

while循環(huán)語(yǔ)句

sum = 0
num = 1
while num <= 100 do
    sum = sum + num
    num = num + 1
end
print("sum =", sum)

for循環(huán)語(yǔ)句

sum = 0
for i = 1,100 do
    sum = sum + i
end

if-else判斷語(yǔ)句

if age == 40 and sex == "Male" then
    print("大于40歲的男人")
elseif age>60 and sex ~= "Female" then
    print("非女人而且大于60")
else
    local age = io.read()
    print("Your age is"..age)
end
2、Nginx + Lua環(huán)境

所需下載以及安裝:

LuaJIT

ngx_devel_kit和lua-nginx-module

重新編譯Nginx

詳細(xì)的下載和安裝步驟參見(jiàn):

3、Nginx調(diào)用lua模塊指令
Nginx的可插拔模塊化加載執(zhí)行,共11個(gè)處理階段
指令 含義
set_by_lua,set_by_lua_file 設(shè)置nginx變量,可以實(shí)現(xiàn)復(fù)雜的賦值邏輯
access_by_lua,access_by_lua_file 請(qǐng)求訪問(wèn)階段處理,用于訪問(wèn)控制
content_by_lua,content_by_lua_file 內(nèi)容處理器,接收請(qǐng)求處理并輸出響應(yīng)
4、Nginx Lua API
API 含義
ngx.var nginx變量
ngx.req.get_headers 獲取請(qǐng)求頭
ngx.req.get_uri_args 獲取url請(qǐng)求參數(shù)
ngx.redirect 重定向
ngx.print 輸出響應(yīng)內(nèi)容體
ngx.say 同nginx.print,但是會(huì)回車(chē)
ngx.header 輸出響應(yīng)頭
...
5、灰度發(fā)布
按照一定的關(guān)系區(qū)別,分不分的代碼進(jìn)行上線,使代碼的發(fā)布能平滑過(guò)渡上線。

根據(jù)用戶的信息cookie等信息區(qū)別

根據(jù)用戶的ip地址

實(shí)現(xiàn)灰度發(fā)布示意圖:

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

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

相關(guān)文章

  • Nginx-深度學(xué)習(xí)

    摘要:深度學(xué)習(xí)篇一動(dòng)靜分離通過(guò)中間件將動(dòng)態(tài)請(qǐng)求和靜態(tài)請(qǐng)求進(jìn)行分離。原因分離資源,減少不必要的請(qǐng)求消耗,減少請(qǐng)求延時(shí)。關(guān)閉后,重定向會(huì)失效。驗(yàn)證規(guī)則保持一致。啟動(dòng),也會(huì)要求你輸入密碼。根據(jù)用戶的信息等信息區(qū)別根據(jù)用戶的地址實(shí)現(xiàn)灰度發(fā)布示意圖 Nginx-深度學(xué)習(xí)篇 一、動(dòng)靜分離 通過(guò)中間件將動(dòng)態(tài)請(qǐng)求和靜態(tài)請(qǐng)求進(jìn)行分離。原因:分離資源,減少不必要的請(qǐng)求消耗,減少請(qǐng)求延時(shí)。 動(dòng)態(tài)和靜態(tài)請(qǐng)求圖例:s...

    wh469012917 評(píng)論0 收藏0
  • PHP學(xué)習(xí)方向-進(jìn)階2(三)

    摘要:關(guān)注回復(fù),獲取原理鎖的解析以及使用場(chǎng)景關(guān)注回復(fù),獲取高級(jí)知識(shí)塊關(guān)注回復(fù),獲取的相關(guān)知識(shí)關(guān)注回復(fù),獲取相關(guān)的知識(shí)輕輕關(guān)注,將推心的不錯(cuò)經(jīng)驗(yàn)和知識(shí) 實(shí)踐篇 給定二維數(shù)組,根據(jù)某個(gè)字段排序 如何判斷上傳文件類(lèi)型,如:僅允許 jpg 上傳 不使用臨時(shí)變量交換兩個(gè)變量的值 $a=1; $b=2; => $a=2; $b=1; strtoupper 在轉(zhuǎn)換中文時(shí)存在亂碼,你如何解決?php...

    ingood 評(píng)論0 收藏0
  • 你和阿里資深架構(gòu)師之間,差的不僅僅是年齡(進(jìn)階必看)

    摘要:導(dǎo)讀閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類(lèi)知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己進(jìn)行查漏補(bǔ)缺,覺(jué)得本文對(duì)你有幫助的話,可以點(diǎn)贊關(guān)注一下。目錄一基礎(chǔ)篇二進(jìn)階篇三高級(jí)篇四架構(gòu)篇五擴(kuò) 導(dǎo)讀:閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類(lèi)知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己...

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

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

0條評(píng)論

閱讀需要支付1元查看
<