程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> nginx rewrite常用示例

nginx rewrite常用示例

編輯:關於PHP編程

nginx rewrite常用示例


相信大家在日常運維工作中如果你用到nginx作為前端反向代理服務器的話,你會對nginx的rewrite又愛又恨,愛它是因為你搞定了它,完成了開發人員的跳轉需求後你會覺得很爽,覺得真的很強大,恨它是因為當一些稀奇古怪跳轉的需求時候你會沒有頭緒、百般調試、上網求神拜佛都搞不定的時候真是想死的心都有了,當然網上也有很多nginx rewrite的經典示例,但是我感覺對我的工作都沒有太大的幫助。下面是我工作中遇到的一些rewrite示例。提供給大家分享。
一、訪問http://www.abc.com正常,現在需要訪問abc.com,直接跳轉到http://www.abc.com。
  1. server {
  2. listen 80;
  3. server_name abc.com;
  4. access_log off;
  5. rewrite (.+) $scheme://www.$host$1 permanent;
  6. }
二、如果你們域名是http://www.abc.com,現在想換一個域名http://www.def.com了,又不想失去之前域名的訪問量,需要配置跳轉。
首先需要在你的server_name裡面把www.abc.com和www.def.cn都寫上。
然後做如下配置:
  1. location / {
  2. if ($host = 'www.abc.com')
  3. {
  4. rewrite ^/(.*)$ http://www.def.com/$1 permanent;
  5. }
  6. }
三、跳轉維護頁面,比如今天維護,想掛一個維護頁面,希望除某些特定的IP地址能正常訪問,因為需要測試。其余所以的IP地址都是訪問維護頁面,這個需求我之前好像寫過,但是今天寫的有點不一樣。在server裡面添加如下內容:
  1. set $rewrite true;
  2. if ($remote_addr = "xxx.xxx.xxx.xxx") {
  3. set $rewrite false;
  4. }
  5. if ($rewrite = true) {
  6. rewrite (.+) http://www.abc.com/maintenance.html;
  7. }
  8. location = /maintenance.html {
  9. root /var/vhost;
  10. }
四、比如現在你的域名是http://bbs.abc.com,現在將這個域名下面的帖子訪問都跳轉到http://www.abc.com/bbs,注意跳轉後的參數也要保持一致。
比如:http://bbs.abc.com/post/addpost/913.shtml跳轉到http://www.abc.com/bbs/post/addpost/913.shtml
  1. location /post {
  2. rewrite (.+) http://www.abc.com/bbs$1 permanent;
  3. }
五、基於uri的跳轉
  1. if ($request_uri ~* ^/note\.php\?product_code=(.*)$) {
  2. rewrite (.*) http://www.abc.com permanent;
  3. }
  1. if ($request_uri ~ ^/forum-(140|141|142|143|144|145|150|151|152|153|154|155|156|157|158|159|200|222|223|224|225|226|227|228)-(\d+).html$) {
  2. rewrite (.*) http://www.abc.com/list permanent;
  3. }
六、基於目錄下面文件的跳轉
  1. location ~* /upload/.*\.php$ {
  2. return 404;
  3. }
七、最普通的url到url跳轉
  1. location ~* ^/ab/maintain/main.html {
  2. rewrite (.+) http://www.abc.com/maintain/main.html permanent;
  3. }
雖然例子舉不全,可能還有一些其它更好的跳轉示例,以後再補充。有不對的地方歡迎大家拍磚。







  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved