日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx从入门到入土

發布時間:2024/3/26 Nginx 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx从入门到入土 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Nginx從入門到入土

Rewrite 規則

Rewrite規則可以實現對url的重寫,以及重定向

指令語法:rewrite regex replacement [flag];

regex : 是代表要匹配的正則表達式,可以通過正則表達式提取變量

replacement : 要替換的url地址

flag : 是我們進行完替換之后,要進行的操作

常用正則表達式

字符描述
\將后面接著的字符標記為一個特殊字符或者一個原義字符或一個向后引用
^匹配輸入字符串的起始位置
$匹配輸入字符串的結束位置
*匹配前面的字符零次或者多次
+匹配前面字符串一次或者多次
?匹配前面字符串的零次或者一次
.匹配除“\n”之外的所有單個字符
(pattern)匹配括號內的pattern

flag參數

標記符號說明
last本條規則匹配完成后繼續向下匹配新的location URI規則
break本條規則匹配完成后終止,不在匹配任何規則
redirect返回302臨時重定向
permanent返回301永久重定向

應用舉例重寫url路徑

處理前:http://127.0.0.1:20001/rest/api/kernel

處理后:http://127.0.0.1:20001/api/kernel

location /rest {proxy_pass http://127.0.0.1:20001;proxy_connect_timeout 600;proxy_read_timeout 600;add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Credentials' 'true';add_header 'Access-Control-Allow-Methods' '*';add_header 'Access-Control-Allow-Headers' 'Authorization,AppInfo,Sign,X-Requested-With,*';if ($request_method = 'OPTIONS') {return 204;}rewrite "^/rest/(.*)$" /$1 break;}

說明:()內為提取的變量,第一個提取的變量是$1

客戶端真實ip

proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-Port $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

如何防止偽造

網上常見nginx配置ip請求頭

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

風險: 用戶可以通過自己設置請求頭來偽造ip,比如用戶在發起http請求是自己測試請求頭x-forwarded-for:192.168.0.151。那么服務器通過x-forwarded-for獲取到的第一個ip就是用戶偽造的ip。

防止偽造方案:

情況1: 在只有1層nginx代理的情況下,設置nginx配置“proxy_set_header X-Forwarded-For remoteaddr;”。(此時remote_addr;”。(此時remotea?ddr;。(此時remote_addr獲取的是用戶的真是ip)

情況2:在有多層反向代理的情況下,

? 1)設置“最外層”nginx配置和情況1一樣“proxy_set_header X-Forwarded-For $remote_addr;”。

? 2)除了“最外層”之外的nginx配置“proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;”。

這樣就防止了用戶通過偽造請求頭來偽造真實ip。后臺只需要從x-forwarded-for請求頭中取出第一個ip就是用戶的真實ip。后面如果有多個ip,就是反向代理的ip

同理:X-Real-IP也差不多。

不同的是當只有1層nginx代理情況下只需配置“proxy_set_header X-Real-IP $remote_addr;”即可。

當有多層反向代理時,只在最外層代理設置“proxy_set_header X-Real-IP $remote_addr;”,如果在非最外層設置,則獲取到的是反向代理機器的ip

總結

以上是生活随笔為你收集整理的Nginx从入门到入土的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。