nginx配置方式(反向代理、限速、url重寫)
nginx反向代理
- 正向代理:代理用戶上網(wǎng),當(dāng)多個(gè)用戶訪問一個(gè)網(wǎng)站時(shí),服務(wù)器只需要緩存一份即可
- 反向代理:代理服務(wù)器,以虛擬主機(jī)方式,一個(gè)ip對應(yīng)多個(gè)主機(jī)
- 應(yīng)用場景:堡壘機(jī)場景,內(nèi)網(wǎng)服務(wù)器發(fā)布場景,緩存場景
- CDN緩存服務(wù)器:緩存靜態(tài)數(shù)據(jù),動態(tài)請求由緩存服務(wù)器當(dāng)代理服務(wù)器向業(yè)務(wù)服務(wù)器拿,減小業(yè)務(wù)服務(wù)器壓力
代理服務(wù)器實(shí)現(xiàn)
location / {
proxy_pass http://139.199.32.236:8080
}使用proxy_pass字段,后面是業(yè)務(wù)服務(wù)器.
每次訪問服務(wù)器根目錄時(shí),自動找業(yè)務(wù)服務(wù)器獲取數(shù)據(jù)
其他字段

請求頭,業(yè)務(wù)服務(wù)器可以從代理服務(wù)器上看到客戶端信息

nginx限速
保護(hù)磁盤IO
限速原理
緩存請求、勻速處理、多余請求直接丟棄
限速實(shí)現(xiàn)
limit_req_zone:用來限制單位時(shí)間內(nèi)的請求數(shù),即速率限制limit_req_conn:用來限制同一時(shí)間連接數(shù),即并發(fā)限制
代碼
1.limit_req_zone 限制請求數(shù)
limit_req_zone限制請求數(shù)(限速)limit_req_conn限制連接數(shù)(訪問數(shù)) 并發(fā)數(shù)


2.限制下載個(gè)數(shù)和下載速度
limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
listen 80;
server name localhost;
location / {
root html;
index index.html index.htm
}
location /abc {
limit_req zone=baism burst=5 nodelay;
limit_conn addr 1;
limit_rate 100k;
limit_rate_after 100m;
}
}請求數(shù)不能超過1個(gè)
下載到100m就會限速到100kb/s
limit_conn_zone;設(shè)置桶limit_conn addr 1;設(shè)置連接數(shù)limit_rate 100k;設(shè)置下載速率
nginx限速
保護(hù)磁盤IO
限速原理
緩存請求、勻速處理、多余請求直接丟棄
限速實(shí)現(xiàn)
limit_req_zone:用來限制單位時(shí)間內(nèi)的請求數(shù),即速率限制limit_req_conn:用來限制同一時(shí)間連接數(shù),即并發(fā)限制
代碼
1.limit_req_zone 限制請求數(shù)
limit_req_zone限制請求數(shù)(限速)limit_req_conn限制連接數(shù)(訪問數(shù)) 并發(fā)數(shù)


2.限制下載個(gè)數(shù)和下載速度
limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
listen 80;
server name localhost;
location / {
root html;
index index.html index.htm
}
location /abc {
limit_req zone=baism burst=5 nodelay;
limit_conn addr 1;
limit_rate 100k;
limit_rate_after 100m;
}
}請求數(shù)不能超過1個(gè)
下載到100m就會限速到100kb/s
limit_conn_zone;設(shè)置桶limit_conn addr 1;設(shè)置連接數(shù)limit_rate 100k;設(shè)置下載速率
nginx實(shí)現(xiàn)url重寫rewrite
將用戶在地址欄輸入的地址重新編輯。
作用場景:域名變更、用戶跳轉(zhuǎn)、偽靜態(tài)場景
重寫指令
代碼1
location /baism00 {
rewrite ^(.*)$ http://192.168.10.129;
}
location /baism01 {
rewrite ^(.*)$ http://192.168.10.129 break;
}
location /baism02 {
rewrite ^(.*)$ http://192.168.10.129 redirect;
}
location /baism03 {
rewrite ^(.*)$ http://192.168.10.129 permanent;
}重寫規(guī)則:rewrite 正則 替代內(nèi)容 flag標(biāo)記
flag標(biāo)記
last:匹配后,進(jìn)行向下執(zhí)行后面的代碼,不跳轉(zhuǎn)break:匹配后中止,不執(zhí)行后面代碼redirect: 302臨時(shí)重定向 搜索網(wǎng)站保存舊網(wǎng)站permanent:301永久重定向 搜索網(wǎng)站保存新網(wǎng)站
使用正則匹配,注意rewrite匹配字符是 目錄全部內(nèi)容,不是location匹配后剩下的內(nèi)容
代碼2
location /html {
rewrite /html/(.*)$ /post/$1 permanent;
} rewrite 匹配內(nèi)容 替換內(nèi)容
匹配內(nèi)容使用括號分組匹配
替換內(nèi)容使用$1,$2代表匹配的內(nèi)容
代碼3
location / {
root html;
index index.html index.html;
if ($http_user_agent ~* 'Chrome') {
break;
return 43;
#return http://www.jd.com
}
}nginx匹配
- 模糊匹配:~匹配 !~不匹配 ~*不區(qū)分大小寫的匹配
- 精確匹配 :=匹配 !=不匹配
注意:if和()和{}之間都有空格
#注釋
$http_user_agent用戶代理,用戶瀏覽器類型$request_filename當(dāng)前請求的文件路徑名,由root或alias指令與URL請求生成$uri請求的不帶請求參數(shù)的URL,可能和最初的值有不同,比如經(jīng)過重定向之類的$http_host http地址
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx geoip模塊實(shí)現(xiàn)地區(qū)性負(fù)載均衡
相信做過awstats的都用過開源的geoip.dat ip數(shù)據(jù)庫,剛好nginx wiki上有g(shù)eoip 模塊,這樣就可以實(shí)現(xiàn)地區(qū)性的負(fù)載均衡,但是maxmind 的ip數(shù)據(jù)庫對中國的支持不算太好,不過現(xiàn)在也不錯(cuò)了~2010-12-12
教你利用Nginx 服務(wù)搭建子域環(huán)境提升二維地圖加載性能的步驟
這篇文章主要介紹了利用 Nginx 服務(wù)搭建子域環(huán)境提升二維地圖加載性能,本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-09-09
Nginx代理到https地址忽略證書驗(yàn)證配置的實(shí)現(xiàn)
在特定情況下,Nginx代理到HTTPS地址可能需要忽略證書驗(yàn)證,本文就來介紹一下如何實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-09-09
將樹莓派轉(zhuǎn)身為強(qiáng)大的Web服務(wù)器如何使用Nginx和cpolar實(shí)現(xiàn)遠(yuǎn)程訪問
這篇文章主要介紹了Nginx可視化管理工具結(jié)合cpolar實(shí)現(xiàn)遠(yuǎn)程訪問內(nèi)網(wǎng)服務(wù),相比其他 Web 服務(wù)器,Nginx 的內(nèi)存占用率非常低,可以在樹莓派等資源受限的設(shè)備上運(yùn)行,同時(shí)結(jié)合cpolar 內(nèi)網(wǎng)穿透工具即可實(shí)現(xiàn)遠(yuǎn)程訪問,需要的朋友可以參考下2023-09-09
Nginx出現(xiàn)504 Gateway Time-out的解決方法
nginx訪問出現(xiàn)504 Gateway Time-out,一般是由于程序執(zhí)行時(shí)間過長導(dǎo)致響應(yīng)超時(shí),本文就來介紹一下解決方法,感興趣的可以了解一下2023-10-10
Ubuntu系統(tǒng)下的Nginx服務(wù)器軟件安裝時(shí)的常見錯(cuò)誤解決
這篇文章主要介紹了Ubuntu系統(tǒng)下的Nginx服務(wù)器軟件安裝時(shí)的常見問題解決,包括徹底卸載Nginx的方法介紹,需要的朋友可以參考下2016-03-03

