亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

詳解nginx配置url重定向-反向代理

2024-08-30 12:28:24
字體:
來源:轉載
供稿:網友

本文系統:Centos6.5_x64

三臺主機:nginx主機,hostname: master.lansgg.com  IP: 192.168.10.128  
          apache主機,hostname: client1.lansgg.com IP:  192.168.10.129

一、nginx 地址重定向

二、nginx 反向代理

1、地址重定向:是指當使用者瀏覽某個網址時,將他導向到另一個網址的技術。常用在把一串很長的網址,轉成較短的網址。因為當要傳播某網站時,常常因為網址太長,不好記憶;又有可能因為換了網路的免費網頁空間,網址又必須要變更,不知情的使用者還以為網站關閉了。這時就可以用網路上的轉址了。這個技術使一個網頁是可借由不同的統一資源定位符(URL)連結。

1.1、這 個模塊允許使用正則表達式重寫URI(需PCRE庫),并且可以根據相關變量重定向和選擇不同的配置。如果這個指令在server字段中指定,那么將在被 請求的location確定之前執行,如果在指令執行后所選擇的location中有其他的重寫規則,那么它們也被執行。如果在location中執行這 個指令產生了新的URI,那么location又一次確定了新的URI。這樣的循環可以最多執行10次,超過以后nginx將返回500錯誤

正則表達式匹配,其中:

* ~ 為區分大小寫匹配

* ~* 為不區分大小寫匹配

* !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配

文件及目錄匹配,其中:

* -f和!-f用來判斷是否存在文件

* -d和!-d用來判斷是否存在目錄

* -e和!-e用來判斷是否存在文件或目錄

* -x和!-x用來判斷文件是否可執行

flag標記有:
* last 相當于Apache里的[L]標記,表示完成rewrite

* break 終止匹配, 不再匹配后面的規則

* redirect 返回302臨時重定向 地址欄會顯示跳轉后的地址

* permanent 返回301永久重定向 地址欄會顯示跳轉后的地址

一些可用的全局變量有,可以用做條件判斷

$args, 請求中的參數;$content_length, HTTP請求信息里的"Content-Length";$content_type, 請求信息里的"Content-Type";$document_root, 針對當前請求的根路徑設置值;$document_uri, 與$uri相同;$host, 請求信息中的"Host",如果請求中沒有Host行,則等于設置的服務器名;$limit_rate, 對連接速率的限制;$request_method, 請求的方法,比如"GET"、"POST"等;$remote_addr, 客戶端地址;$remote_port, 客戶端端口號;$remote_user, 客戶端用戶名,認證用;$request_filename, 當前請求的文件路徑名$request_body_file$request_uri, 請求的URI,帶查詢字符串;$query_string, 與$args相同;$scheme, 所用的協議,比如http或者是https,比如rewrite ^(.+)$ $scheme://example.com$1 redirect;$server_protocol, 請求的協議版本,"HTTP/1.0"或"HTTP/1.1";$server_addr, 服務器地址,如果沒有用listen指明服務器地址,使用這個變量將發起一次系統調用以取得地址(造成資源浪費);$server_name, 請求到達的服務器名;$server_port, 請求到達的服務器端口號;$uri, 請求的URI,可能和最初的值有不同,比如經過重定向之類的。

rewrite 指令:可以使用在 server, location, if 區域;

語法:rewrite regex replacement flag

按照相關的正則表達式與字符串修改URI,指令按照在配置文件中出現的順序執行。 

可以在重寫指令后面添加標記。 

如果替換的字符串以http://開頭,請求將被重定向,并且不再執行多余的rewrite指令。 

尾部的標記(flag)可以是以下的值:

  • last - 完成重寫指令,之后搜索相應的URI或location。
  • break - 完成重寫指令。
  • redirect - 返回302臨時重定向,如果替換字段用http://開頭則被使用。
  • permanent - 返回301永久重定向。

注 意如果一個重定向是相對的(沒有主機名部分),nginx將在重定向的過程中使用匹配server_name指令的“Host”頭或者 server_name指令指定的第一個名稱,如果頭不匹配或不存在,如果沒有設置server_name,將使用本地主機名,如果你總是想讓nginx 使用“Host”頭,可以在server_name使用“*”通配符(查看http核心模塊中的server_name)。例如:

rewrite ^(/download/.*)/media/(.*)/..*$ $1/mp3/$2.mp3 last;rewrite ^(/download/.*)/audio/(.*)/..*$ $1/mp3/$2.ra last;return 403;

但是如果我們將其放入一個名為/download/的location中,則需要將last標記改為break,否則nginx將執行10次循環并返回500錯誤。

location /download/ { rewrite ^(/download/.*)/media/(.*)/..*$ $1/mp3/$2.mp3 break; rewrite ^(/download/.*)/audio/(.*)/..*$ $1/mp3/$2.ra break; return 403;}

如果替換字段中包含參數,那么其余的請求參數將附加到后面,為了防止附加,可以在最后一個字符后面跟一個問號:

rewrite ^/users/(.*)$ /show?user=$1? last;

注意:大括號({和}),可以同時用在正則表達式和配置塊中,為了防止沖突,正則表達式使用大括號需要用雙引號(或者單引號)。例如要重寫以下的URL:

/photos/123456

為:

/path/to/photos/12/1234/123456.png

則使用以下正則表達式(注意引號):

rewrite "/photos/([0-9] {2})([0-9] {2})([0-9] {2})" /path/to/photos/$1/$1$2/$1$2$3.png;

如果指定一個“?”在重寫的結尾,Nginx將丟棄請求中的參數,即變量$args,當使用$request_uri或$uri&$args時可以在rewrite結尾使用“?”以避免nginx處理兩次參數串。 

在rewrite中使用$request_uri將www.example.com重寫到example.com:

server { server_name www.example.com; rewrite ^ http://example.com$request_uri? permanent;}

同樣,重寫只對路徑進行操作,而不是參數,如果要重寫一個帶參數的URL,可以使用以下代替:

if ($args ^~ post=100){ rewrite ^ http://example.com/new-address.html? permanent;}

注意$args變量不會被編譯,與location過程中的URI不同(參考http核心模塊中的location)

示例:當訪問www.49028c.com的時候跳轉到meiwen.vevb.com;

 server {  listen 80 default_server;  server_name  www.49028c.com lansgg.com;  access_log  logs/lansgg.access.log main;  error_log  logs/lansgg.error.log;  root   /opt/nginx/nginx/html/lansgg;  index index.html;  rewrite ^/ http://meiwen.vevb.com/;  }

break 指令 可使用server, location, if 區域; 中止Rewirte,不在繼續匹配

last 指令 可server, location, if  區域;

last與break的區別在于,last并不會停止對下面location的匹配。

測驗一下break與last的區別

 server { listen 80 default_server; server_name www.49028c.com lansgg.com; access_log logs/lansgg.access.log main; error_log logs/lansgg.error.log; root  /opt/nginx/nginx/html/lansgg; index index.html; location /c1.html { rewrite /c1.html /c2.html break; } location /c2.html { return 508; } }[root@master sbin]# echo "c1" > /opt/nginx/nginx/html/lansgg/c1.html[root@master sbin]# echo "c2" > /opt/nginx/nginx/html/lansgg/c2.html

使用break會停止匹配下面的location,直接發起請求www.49028c.com/c1.html,他會顯示c2的內容;


nginx,反向代理重定向,反向代理,重定向,nginx配置url反向代理  

使用last的話,會繼續搜索下面是否有符合條件(符合重寫后的/c2.html請求)的location。此時,/c2.html剛好與面location的條件對應上了,進入花括號{}里面的代碼執行,這里會返回508。

 server { listen 80 default_server; server_name www.49028c.com lansgg.com; access_log logs/lansgg.access.log main; error_log logs/lansgg.error.log; root  /opt/nginx/nginx/html/lansgg; index index.html; location /c1.html { rewrite /c1.html /c2.html last; } location /c2.html { return 508; } }

使用firebug 可以看到;

nginx,反向代理重定向,反向代理,重定向,nginx配置url反向代理

if 指令 可使用server, location 區域;

示例:當訪問http://www.49028c.com網址的時候跳轉到meiwen.vevb.com;

 server {  listen 80 default_server;  server_name  www.49028c.com lansgg.com;  access_log  logs/lansgg.access.log main;  error_log  logs/lansgg.error.log;  root   /opt/nginx/nginx/html/lansgg;  index index.html;  if ($http_host = www.49028c.com){  rewrite (.*) http://meiwen.vevb.com;  }  }

nginx,反向代理重定向,反向代理,重定向,nginx配置url反向代理

return 指令 可使用server, location, if  區域

語法:return code 

這個指令結束執行配置語句并為客戶端返回狀態代碼,可以使用下列的值:204,400,402-406,408,410, 411, 413, 416與500-504。此外,非標準代碼444將關閉連接并且不發送任何的頭部。

rewrite_log  指令  可使用server, location, if  區域

啟用時將在error log中記錄notice 標記的重寫日志。

set 指令 可使用server, location, if  區域

語法:set variable value 

指令設置一個變量并為其賦值,其值可以是文本,變量和它們的組合。 

你可以使用set定義一個新的變量,但是不能使用set設置$http_xxx頭部變量的值。

uninitialized_variable_warn 指令 可使用 http, server, location, if  區域

語法:uninitialized_variable_warn on|off 

默認值:uninitialized_variable_warn on 

開啟或關閉在未初始化變量中記錄警告日志。 

事實上,rewrite指令在配置文件加載時已經編譯到內部代碼中,在解釋器產生請求時使用。 

expires 指令 可 http, server, location 區域

語法: expires [time|epoch|max|off]

默認值: expires off

該指令可以控制HTTP應答中的“Expires”和“Cache-Control”的頭標,(起到控制頁面緩存的作用)??梢栽趖ime值中使用正數或負數。“Expires”頭標的值將通過當前系統時間加上設定的 time 值來獲得。

epoch 指定“Expires”的值為 1 January, 1970, 00:00:01 GMT。

max 指定“Expires”的值為 31 December 2037 23:59:59 GMT,“Cache-Control”的值為10年。

-1 指定“Expires”的值為 服務器當前時間 -1s,即永遠過期

“Cache-Control”頭標的值由指定的時間來決定:

    負數:Cache-Control: no-cache

    正數或零:Cache-Control: max-age = #, # 為指定時間的秒數s。其他的單位有d(天),h(小時)

"off" 表示不修改“Expires”和“Cache-Control”的值

控制圖片等過期時間為30天,這個時間可以設置的更長。具體視情況而定

location ~ /.(gif|jpg|jpeg|png|bmp|ico)$ {   log_not_found off; #不記錄404 not found 錯誤日志   expires 30d;   break;  }

控制匹配/resource/或者/mediatorModule/里所有的文件緩存設置到最長時間

  location ~ /(resource|mediatorModule)/ {    root /opt/demo;    expires max;  }

設定某個文件的過期時間;這里為600秒,并不記錄訪問日志

location ^~ /html/scripts/loadhead_1.js {access_log off;root /opt/lampp/htdocs/web;expires 600;break;}

設置GZIP

一般情況下壓縮后的html、css、js、PHP、jhtml等文件,大小能降至原來的25%,也就是說,原本一個100k的html,壓縮后只剩下25k。這無疑能節省很多帶寬,也能降低服務器的負載。

在nginx中配置gzip比較簡單

一般情況下只要在nginx.conf的http段中加入下面幾行配置即可

 gzip on; gzip_min_length 1000; gzip_buffers  48k; gzip_types  text/plain application/x-javascript text/css text/html application/xml;

可以通過網頁gzip檢測工具來檢測網頁是否啟用了gzip

臨時重定向示例:訪問www.49028c.com/c 重定向到www.49028c.com/cc

編輯nginx.conf

 server {  listen 80 default_server;  server_name  www.49028c.com lansgg.com;  access_log  logs/lansgg.access.log main;  error_log  logs/lansgg.error.log;  root   /opt/nginx/nginx/html/lansgg;  index index.html;  rewrite ^/c/(.*)$ http://www.49028c.com/cc/$1;  }   [root@master lansgg]# tree.├── c│ └── index.html├── cc│ └── index.html├── index.html└── it.jpg 2 directories, 4 files

訪問http://www.49028c.com/c 會跳轉到http://www.49028c.com/cc
nginx,反向代理重定向,反向代理,重定向,nginx配置url反向代理

302即為臨時重定向;

永久重定向(隱含重定向)

編輯nginx.conf

 server {  listen 80 default_server;  server_name  www.49028c.com lansgg.com;  access_log  logs/lansgg.access.log main;  error_log  logs/lansgg.error.log;  root   /opt/nginx/nginx/html/lansgg;  index index.html;  rewrite ^/c/(.*)$ /cc/$1;  }

訪問 http://www.49028c.com/c/ 頁面顯示的是跳轉后的頁面,可是url卻沒有變化;firebug也看不到302代碼信息;現在它其實是301;

2、反向代理:是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。

2.1、配置nginx實現反向代理;

需求:訪問http://192.168.10.128/other 返回 apache主機的other目錄下的Index.html

nginx,反向代理重定向,反向代理,重定向,nginx配置url反向代理

涉及nginx指令:

語法:proxy_pass URL   

可使用字段:location, location中的if字段      

這個指令設置被代理服務器的地址和被映射的URI,地址可以使用主機名或IP加端口號的形式,例如:proxy_pass http://192.168.10.129/url

2.2、配置nginx配置文件nginx.conf

 server { listen 80 default_server; server_name www.49028c.com lansgg.com; access_log logs/lansgg.access.log main; error_log logs/lansgg.error.log; root  /opt/nginx/nginx/html/lansgg; location / {  index index.html;  } location /other { proxy_pass   http://192.168.10.129/other; proxy_set_header X-Real-IP $remote_addr;   } }

2.3、配置client1

mkdir /var/www/html/otherecho "192.168.10.129" > /var/www/html/other/index.html

2.4、測試;

訪問url:    http://www.49028c.com/other     你會發現跳轉到了 : http://192.168.10.129/other/

nginx,反向代理重定向,反向代理,重定向,nginx配置url反向代理

查看日志:

[root@client1 ~]# tail -f /var/log/httpd/access_log 192.168.10.1 - - [06/Nov/2014:21:25:44 +0800] "GET /other/ HTTP/1.1" 200 15 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0"

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级淫片aaaaaaa视频| 2019最新中文字幕| 久久久999精品免费| 国产欧美一区二区三区四区| 久久理论片午夜琪琪电影网| 欧美精品激情在线观看| 国产精品日韩精品| 亚洲第一网中文字幕| 国产精品欧美日韩| 欧美成人在线网站| 69久久夜色精品国产7777| 精品国产一区二区三区久久| 欧美精品亚州精品| 这里只有精品视频| 91av视频在线观看| 美日韩精品免费视频| 日韩在线免费视频| www.色综合| 97精品国产97久久久久久免费| 国产成人激情视频| 亚洲2020天天堂在线观看| 91精品国产色综合久久不卡98口| 亚洲第一网站免费视频| 成人黄色av免费在线观看| 91免费看视频.| 亚洲自拍另类欧美丝袜| 国产成人精品久久二区二区| 国产成人亚洲综合91| 国产成人在线精品| 亚州欧美日韩中文视频| 国产精品成人av性教育| 欧美在线视频观看| 成人激情电影一区二区| 亚洲影院色无极综合| 另类视频在线观看| 亚洲美女免费精品视频在线观看| 精品久久香蕉国产线看观看亚洲| 亚洲成人免费在线视频| 精品亚洲一区二区三区在线观看| 欧美大学生性色视频| 欧美电影在线播放| 91久久精品国产91久久| 91在线无精精品一区二区| 欧美日本啪啪无遮挡网站| 日韩在线视频观看正片免费网站| 日韩精品中文字幕在线观看| 亚洲女人天堂色在线7777| 91久久中文字幕| 精品国产一区二区三区四区在线观看| 久久久久久久久久久亚洲| 欧美日韩不卡合集视频| 精品亚洲一区二区三区在线观看| 97人洗澡人人免费公开视频碰碰碰| 5278欧美一区二区三区| 久久久国产视频| 欧美一区三区三区高中清蜜桃| 国产日韩av在线播放| 久久视频在线直播| 亚洲影影院av| 亚洲第一男人av| 成人亚洲综合色就1024| 久久九九国产精品怡红院| 8x海外华人永久免费日韩内陆视频| 亚洲色图13p| 亚洲成人精品久久| 欧美极品美女视频网站在线观看免费| 青草青草久热精品视频在线网站| 亚洲第一免费播放区| 成人黄色午夜影院| 亚洲免费成人av电影| 成人亚洲综合色就1024| 91国产视频在线播放| 亚洲区一区二区| 国产精品成人av性教育| 久久97精品久久久久久久不卡| 日韩国产精品一区| 精品国产依人香蕉在线精品| 一区二区欧美亚洲| 国产精品第二页| 久久精品国产久精国产一老狼| 欧美乱人伦中文字幕在线| 91综合免费在线| 亚洲国产精品久久久| 久久成人这里只有精品| 久久九九国产精品怡红院| 成人黄色av网| 久久人人爽人人爽人人片av高清| 国产成人午夜视频网址| 亚洲综合成人婷婷小说| 国产欧美精品一区二区三区-老狼| 日本中文字幕不卡免费| 欧美性猛交丰臀xxxxx网站| 性夜试看影院91社区| 亚洲男人天堂2023| 55夜色66夜色国产精品视频| 国产中文字幕日韩| 91色p视频在线| 清纯唯美日韩制服另类| 1769国产精品| 色噜噜狠狠狠综合曰曰曰88av| 国产精品pans私拍| 97色伦亚洲国产| 91精品国产综合久久久久久蜜臀| 美日韩丰满少妇在线观看| 亚洲一区第一页| 日本不卡高字幕在线2019| 亚洲少妇中文在线| 亚洲欧美成人一区二区在线电影| 久久91精品国产91久久跳| 日韩美女主播视频| 国产中文字幕亚洲| 粉嫩老牛aⅴ一区二区三区| 亚洲精品中文字幕有码专区| 精品久久久久久久久久久久久| 国产欧美在线播放| 国产精品欧美一区二区| 欧美极品少妇全裸体| 最近2019年日本中文免费字幕| 国产精品免费一区二区三区都可以| 久久久久久久久久婷婷| 韩剧1988免费观看全集| 亚洲xxxxx性| 国产精品稀缺呦系列在线| 日本精品中文字幕| 大荫蒂欧美视频另类xxxx| 欧美午夜精品久久久久久人妖| 久久精品91久久香蕉加勒比| 性欧美xxxx视频在线观看| 91超碰caoporn97人人| 国产精品啪视频| 国产精品精品国产| 国模gogo一区二区大胆私拍| 欧美亚洲国产日本| 在线观看国产成人av片| 国产亚洲欧美日韩一区二区| 成人精品网站在线观看| 亚洲欧美另类人妖| 黑人巨大精品欧美一区二区免费| 日韩av在线直播| 国内精品免费午夜毛片| 亚洲欧美成人一区二区在线电影| 日韩av不卡电影| 国产精品最新在线观看| 国产黑人绿帽在线第一区| 91久久久久久久久久久久久| 亚洲人成绝费网站色www| 91精品国产高清自在线看超| 欧美性一区二区三区| 在线电影av不卡网址| 欧美激情精品久久久久久久变态| 81精品国产乱码久久久久久| 欧美与欧洲交xxxx免费观看| 久久精品亚洲94久久精品| 日韩欧美aⅴ综合网站发布| 日韩精品免费一线在线观看| 亚洲第一中文字幕| 精品久久久香蕉免费精品视频| 日韩欧美在线国产| 国产香蕉精品视频一区二区三区| 国产精品第一视频| 日韩在线视频国产| 亚洲第一区中文99精品| 欧美贵妇videos办公室| 精品国产区一区二区三区在线观看|