摘要:當前請求在指令中指定的值。請求主機頭字段,否則為服務器名稱。客戶端信息客戶端信息這個變量可以限制連接速率。已經經過驗證的用戶名。請求使用的協議,通常是或。請求到達服務器的端口號。包含請求參數的原始,不包含主機名,如。
rewrite配置在server{}、location{}、if{}段中 ,對Url中除去域名和參數的字符串起作用
一、語法:rewrite regex replacement [flag];regex:服務器接收到的請求地址
replacement:重寫后的請求地址
[flag]標志位:
last: 表示完成rewrite
break: 表示跳出rewrite
redirect: 返回302臨時重定向
permanent: 返回301永久重定向
二、rewrite與locationrewrite是在同一域名內更改獲取資源的路徑
location是對一類路徑做控制訪問或反向代理,可以proxy_pass到其他機器。
st=>start: URL請求 op1=>operation: server{}的rewrite cond1=>condition: 是否重寫url op2=>operation: location匹配 cond2=>condition: 是否重寫 op3=>operation: location{}的rewrite cond3=>condition: 是否重寫 op4=>operation: 響應結果 e=>end: 結束 st->op1->cond1 cond1(yes,right)->op1 cond1(no)->op2->cond2 cond2(yes,right)->op1 cond2(no)->op3->cond3 cond3(yes,right)->op1 cond3(no)->op4->e
這樣的循環超過10次,服務器會返回500錯誤提示
四、相關指令set : 設置變量
return : 返回狀態碼
if(條件){} :設定條件,再進行重寫
if條件判斷寫法:
1: = 用于字符串比較
2: ~ 區分大小寫正則匹配;
~* 不區分大小寫正則匹配
3: -f 是否為文件
-d 是否為目錄
-e 是否存在
4: 當表達式只是一個變量時,如果值為空或任何以0開頭的字符串都會當做false
eg.
if ($remote_addr = 192.168.1.100) { return 403; } if ($http_user_agent ~ MSIE) { rewrite ^.*$ /ie.htm; break; #不break會循環重定向 } if (!-e $document_root$fastcgi_script_name) { rewrite ^.*$ /404.html break; }
Goods-3.html ---->Goods.php?goods_id=3 goods-([d]+).html ---> goods.php?goods_id =$1 location /ecshop { index index.php; rewrite goods-([d]+).html$ /ecshop/goods.php?id=$1; rewrite article-([d]+).html$ /ecshop/article.php?id=$1; rewrite category-(d+)-b(d+).html /ecshop/category.php?id=$1&brand=$2; rewrite category-(d+)-b(d+)-min(d+)-max(d+)-attr([d.]+).html /ecshop/category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5; rewrite category-(d+)-b(d+)-min(d+)-max(d+)-attr([d+.])-(d+)-([^-]+)-([^-]+).html /ecshop/category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5&page=$6&sort=$7&order=$8; } location ~* .(gif|jpg|png|swf|flv)$ { valid_referers none blocked www.jefflei.com www.leizhenfang.com; if ($invalid_referer) { return 404; } //防盜鏈 } http { # 定義image日志格式 log_format imagelog "[$time_local] " $image_file " " $image_type " " $body_bytes_sent " " $status; # 開啟重寫日志 rewrite_log on; server { root /home/www; location / { # 重寫規則信息 error_log logs/rewrite.log notice; # 注意這里要用‘’單引號引起來,避免{} rewrite "^/images/([a-z]{2})/([a-z0-9]{5})/(.*).(png|jpg|gif)$" /data?file=$3.$4; # 注意不能在上面這條規則后面加上“last”參數,否則下面的set指令不會執行 set $image_file $3; set $image_type $4; } location /data { # 指定針對圖片的日志格式,來分析圖片類型和大小 access_log logs/images.log mian; root /data/images; # 應用前面定義的變量。判斷首先文件在不在,不在再判斷目錄在不在,如果還不在就跳轉到最后一個url里 try_files /$arg_file /image404.html; } location = /image404.html { # 圖片不存在返回特定的信息 return 404 "image not found "; } }六、全局變量
$args : #這個變量等于請求行中的參數,同$query_string
$content_length : 請求頭中的Content-length字段。
$content_type : 請求頭中的Content-Type字段。
$document_root : 當前請求在root指令中指定的值。
$host : 請求主機頭字段,否則為服務器名稱。
$http_user_agent : 客戶端agent信息
$http_cookie : 客戶端cookie信息
$limit_rate : 這個變量可以限制連接速率。
$request_method : 客戶端請求的動作,通常為GET或POST。
$remote_addr : 客戶端的IP地址。
$remote_port : 客戶端的端口。
$remote_user : 已經經過Auth Basic Module驗證的用戶名。
$request_filename :當前請求的文件路徑,由root或alias指令與URI請求生成。
$scheme : HTTP方法(如http,https)。
$server_protocol : 請求使用的協議,通常是HTTP/1.0或HTTP/1.1。
$server_addr : 服務器地址,在完成一次系統調用后可以確定這個值。
$server_name : 服務器名稱。
$server_port : 請求到達服務器的端口號。
$request_uri : 包含請求參數的原始URI,不包含主機名,如:”/foo/bar.php?arg=baz”。
$uri : 不帶請求參數的當前URI,$uri不包含主機名,如”/foo/bar.html”。
$document_uri : 與$uri相同。
例:http://localhost:88/test1/test2/test.php
$host:localhost
$server_port:88
$request_uri:http://localhost:88/test1/tes...
$document_uri:/test1/test2/test.php
$document_root:/var/www/html
$request_filename:/var/www/html/test1/test2/test.php
https://linux.cn/article-5714...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39577.html
摘要:前言設置項目的域名站點的時候,需要對做一些對應的重寫配置,用來做相關路由,否則會報。 前言 設置laravel項目的域名站點的時候,需要對nginx做一些對應的重寫rewrite配置,用來做相關路由,否則會報404。 nginx.conf配置 server { listen 80; server_name xxx.com; #域名 root /data/www...
摘要:前言設置項目的域名站點的時候,需要對做一些對應的重寫配置,用來做相關路由,否則會報。 前言 設置laravel項目的域名站點的時候,需要對nginx做一些對應的重寫rewrite配置,用來做相關路由,否則會報404。 nginx.conf配置 server { listen 80; server_name xxx.com; #域名 root /data/www...
摘要:需要注意的是,當普通匹配的結果是嚴格精確的,則停止匹配返回結果。文字說明進行精準匹配,檢查是否在精準匹配模式下,匹配成功,若成功則停止檢查。判斷是否可以進行正則匹配,如果存在符號的段表示不進行正則匹配,立即返回結果。 Location 匹配模式 一、語法 location [=|~|~*|^~] uri{ root /var/www/html index index.h...
摘要:我們可以了解到,鏡像的定制實際上就是定制每一層所添加的配置文件。指令之指令的目的就是來指定基礎鏡像。指令之指令是用來執行命令行命令的。由于命令行的強大能力,指令在定制鏡像時是最常用的指令之一。構建鏡像這里我們使用了命令進行鏡像構建。 我們可以了解到,鏡像的定制實際上就是定制每一層所添加的配置、文件。如果我們可以把每一層修改、安裝、構建、操作的命令都寫入一個腳本,用這個腳本來構建、定制鏡...
摘要:學習之道簡體中文版通往實戰大師之旅掌握最簡單,且最實用的教程。前言學習之道這本書使用路線圖中的精華部分用于傳授,并將其融入一個獨具吸引力的真實世界的具體代碼實現。完美展現了的優雅。膜拜的學習之道是必讀的一本書。 《React 學習之道》The Road to learn React (簡體中文版) 通往 React 實戰大師之旅:掌握 React 最簡單,且最實用的教程。 showIm...
閱讀 1220·2023-04-26 02:20
閱讀 3342·2021-11-22 14:45
閱讀 4120·2021-11-17 09:33
閱讀 976·2021-09-06 15:00
閱讀 1486·2021-09-03 10:30
閱讀 3844·2021-07-26 22:01
閱讀 996·2019-08-30 15:54
閱讀 535·2019-08-30 15:43