Rwrite相關全局變量
coding.net/u/aminglinux/p/nginx/git/blob/master/rewrite/variable.md
Rwrite實戰(zhàn)
coding.net/u/aminglinux/p/nginx/git/blob/master/rewrite/example.md
nginx 常用全局變量
變量 說明
$args 請求中的參數(shù),如www.123.com/1.php?a=1&b=2的$args就是a=1&b=2
$content_length HTTP請求信息里的"Content-Length"
$conten_type HTTP請求信息里的"Content-Type"
$document_root nginx虛擬主機配置文件中的root參數(shù)對應的值
$document_uri 當前請求中不包含指令的URI,如www.123.com/1.php?a=1&b=2的$document_uri就是1.php,不包含后面的參數(shù) #常用
$host 主機頭,也就是域名 #常用
$http_user_agent 客戶端的詳細信息,也就是瀏覽器的標識,用curl -A可以指定 #常用
$http_cookie 客戶端的cookie信息
$limit_rate 如果nginx服務器使用limit_rate配置了顯示網(wǎng)絡速率,則會顯示,如果沒有設置, 則顯示0
$remote_addr 客戶端的公網(wǎng)ip
$remote_port 客戶端的port
$remote_user 如果nginx有配置認證,該變量代表客戶端認證的用戶名
$request_body_file 做反向代理時發(fā)給后端服務器的本地資源的名稱
$request_method 請求資源的方式,GET/PUT/DELETE等
$request_filename 當前請求的資源文件的路徑名稱,相當于是$document_root/$document_uri的組合
$request_uri 請求的鏈接,包括$document_uri和$args #常用
$scheme 請求的協(xié)議,如ftp,http,https
$server_protocol 客戶端請求資源使用的協(xié)議的版本,如HTTP/1.0,HTTP/1.1,HTTP/2.0等
$server_addr 服務器IP地址
$server_name 服務器的主機名
$server_port 服務器的端口號
$uri 和$document_uri相同 #常用
$http_referer 客戶端請求時的referer,通俗講就是該請求是通過哪個鏈接跳過來的,用curl -e可以指定 #常用
Rewrite實戰(zhàn)
本部分內(nèi)容為nginx生產(chǎn)環(huán)境中使用的場景示例。
域名跳轉(域名重定向)
示例1(不帶條件的):
server{
listen 80;
server_name www.aminglinux.com;
rewrite /(.*) http://www.aming.com/$1 permanent;
.......
}
示例2(帶條件的):
server{
listen 80;
server_name www.aminglinux.com aminglinux.com;
if ($host != 'www.aminglinux.com')
{
rewrite /(.*) http://www.aminglinux.com/$1 permanent;
}
.......
}
示例3(http跳轉到https):
server{
listen 80;
server_name www.aminglinux.com;
rewrite /(.*) https://www.aminglinux.com/$1 permanent;
.......
}
示例4(域名訪問二級目錄)
server{
listen 80;
server_name bbs.aminglinux.com;
rewrite /(.*) http://www.aminglinux.com/bbs/$1 last;
.......
}
示例5(靜態(tài)請求分離)
server{
listen 80;
server_name www.aminglinux.com;
location ~ ^.+.(jpg|jpeg|gif|css|png|js)$
{
rewrite /(.) http://img.aminglinux.com/$1 permanent;
}
.......
}
或者:
server{
listen 80;
server_name www.aminglinux.com;
if ( $uri ~ 'jpg|jpeg|gif|css|png|js$')
{
rewrite /(.) http://img.aminglinux.com/$1 permanent;
}
.......
}
防盜鏈
示例6
server{
listen 80;
server_name www.aminglinux.com;
location ~ ^.+.(jpg|jpeg|gif|css|png|js|rar|zip|flv)$
{
#白名單 空 blocked 域名
valid_referers none blocked server_names.aminglinux.com aminglinux.com .aming.com aming.com;
if ($invalid_referer) #黑名單
{
rewrite /(.) http://img.aminglinux.com/images/forbidden.png;
}
}
.......
}
說明:這里是通配,跟正則里面的不是一個意思,none指的是referer不存在的情況(curl -e 測試),
blocked指的是referer頭部的值被防火墻或者代理服務器刪除或者偽裝的情況,
該情況下,referer頭部的值不以http://或者https://開頭(curl -e 后面跟的referer不以http://或者https://開頭)。
或者:
location ~ ^.+.(jpg|jpeg|gif|css|png|js|rar|zip|flv)$
{
valid_referers none blocked server_names.aminglinux.com *.aming.com aminglinux.com aming.com;
if ($invalid_referer)
{
return 403;
}
}
偽靜態(tài)
示例7(discuz偽靜態(tài)):
location / {
rewrite ^([^.])/topic-(.+).html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^([^.])/forum-(\w+)-([0-9]+).html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^.])/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^.])/group-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^.])/space-(username|uid)-(.+).html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^.])/(fid|tid)-([0-9]+).html$ $1/index.php?action=$2&value=$3 last;
}
rewrite多個條件的并且
示例8:
location /{
set $rule 0; #定義一個變量
if ($document_uri !~ '^/abc')
{
set $rule "${rule}1"; # 01
}
if ($http_user_agent ~ 'ie6|firefox')
{
set $rule "${rule}2"; #02
}
if ($rule = "012")
{
rewrite /(.) /abc/$1 redirect;
}
}
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
當前標題:nginx全局變量及rewrite實戰(zhàn)-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://jinyejixie.com/article0/dcggoo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、關鍵詞優(yōu)化、App開發(fā)、網(wǎng)站維護、服務器托管、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容