Nginx跳轉的配置例項
相信大家在日常運維工作中如果你用到nginx作為前端反向代理伺服器的話,你會對nginx的rewrite又愛又恨,愛它是因為你搞定了它,完成了開發人員的跳轉需求後你會覺得很爽,覺得真的很強大,恨它是因為當一些稀奇古怪跳轉的需求時候你會沒有頭緒、百般除錯、上網求神拜佛都搞不定的時候真是想死的心都有了,當然網上也有很多nginx rewrite的經典示例,但是我感覺對我的工作都沒有太大的幫助
下面是我工作中遇到的一些rewrite示例。提供給大家分享
正則表示式匹配,其中:
-
* ~ 為區分大小寫匹配
-
* ~* 為不區分大小寫匹配
-
* !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配
檔案及目錄匹配,其中:
-
* -f和!-f用來判斷是否存在檔案
-
* -d和!-d用來判斷是否存在目錄
-
* -e和!-e用來判斷是否存在檔案或目錄
-
* -x和!-x用來判斷檔案是否可執行
flag標記有:
-
* last 相當於Apache裡的[L]標記,表示完成rewrite
-
* break 終止匹配, 不再匹配後面的規則
-
* redirect 返回302臨時重定向 位址列會顯示跳轉後的地址
-
* permanent 返回301永久重定向 位址列會顯示跳轉後的地址
1、換域名後導流到新域名
需要將之前用的www.a.com域名的流量全部跳轉到www.b.com
實現效果:比如訪問 www.a.com/123.html自動跳到www.b.com/123.html
我們用nginx實現
cd /etc/nginx/sites-available
vi mysite
增加rewrite命令
server {
listen 80;
server_name www.a.com;
rewrite ^/(.*)$ http://www.b.com/$1 permanent;
}
2、主域名跳轉到www域名
比如將主域名xxx.com 跳轉到www.xxx.com
cd /etc/nginx/sites-available
vi mysite
#主域名跳轉到www域名
server {
listen 80;
server_name xxx.com;
rewrite ^/(.*)$ http://www.xxx.com/$1 permanent;
}
server {
listen 80;
server_name www.xxx.com;
#已省略餘下通用配置內容
}
3、主目錄跳轉,子目錄不跳轉
a.com和www.a.com都跳到www.b.com
www.a.com/123不跳
server {
listen 80;
server_name www.a.us a.us;
#根目錄跳轉
location / {
rewrite .+ http://www.b.com/ permanent;
}
#非根目錄本地執行
location ~* /.+ {
#已省略餘下通用配置內容
}
}
4、301跳轉設定:
server {
listen 80;
server_name 123.com;
rewrite ^/(.*) http://456.com/$1 permanent;
access_log off;
}
permanent – 返回永久重定向的HTTP狀態301
5、302跳轉設定:
server {
listen 80;
server_name 123.com;
rewrite ^/(.*) http://456.com/$1 redirect;
access_log off;
}
redirect – 返回臨時重定向的HTTP狀態302
6、禁止htaccess
location ~//.ht {
deny all;
}
7、禁止多個目錄
location ~ ^/(cron|templates)/ {
deny all;
break;
}
8、禁止以/data開頭的檔案
可以禁止/data/下多級目錄下.log.txt等請求;
location ~ ^/data {
deny all;
}
9、禁止單個目錄
不能禁止.log.txt能請求
location /searchword/cron/ {
deny all;
}
10、禁止單個檔案
location ~ /data/sql/data.sql {
deny all;
}
11、給favicon.ico和robots.txt設定過期時間;
這裡為favicon.ico為99天,robots.txt為7天並不記錄404錯誤日誌
location ~(favicon.ico) {
log_not_found off;
expires 99d;
break;
}
location ~(robots.txt) {
log_not_found off;
expires 7d;
break;
}
12、設定某個檔案的過期時間;這裡為600秒,並不記錄訪問日誌
location ^~ /html/scripts/loadhead_1.js {
access_log off;
root /opt/lampp/htdocs/web;
expires 600;
break;
}
13、檔案反盜鏈並設定過期時間
這裡的return 412 為自定義的http狀態碼,預設為403,方便找出正確的盜鏈的請求
“rewrite ^/ http://leech.c1gstudio.com/leech.gif;”顯示一張防盜鏈圖片
“access_log off;”不記錄訪問日誌,減輕壓力
“expires 3d”所有檔案3天的瀏覽器快取
location ~* ^.+/.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {
valid_referers none blocked *.c1gstudio.com *.c1gstudio.net localhost 208.97.167.194;
if ($invalid_referer) {
rewrite ^/ http://leech.c1gstudio.com/leech.gif;
return 412;
break;
}
access_log off;
root /opt/lampp/htdocs/web;
expires 3d;
break;
}
14、只充許固定ip訪問網站,並加上密碼
root /opt/htdocs/www;
allow 208.97.167.194;
allow 222.33.1.2;
allow 231.152.49.4;
deny all;
auth_basic "C1G_ADMIN";
auth_basic_user_file htpasswd;
15、將多級目錄下的檔案轉成一個檔案,增強seo效果
/job-123-456-789.html 指向/job/123/456/789.html
rewrite ^/job-([0-9]+)-([0-9]+)-([0-9]+)/.html$ /job/$1/$2/jobshow_$3.html last;
16、將根目錄下某個資料夾指向2級目錄
如/shanghaijob/ 指向 /area/shanghai/
如果你將last改成permanent,那麼瀏覽器位址列顯是/location/shanghai/
rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;
上面例子有個問題是訪問/shanghai 時將不會匹配
rewrite ^/([0-9a-z]+)job$ /area/$1/ last;
rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;
這樣/shanghai 也可以訪問了,但頁面中的相對連結無法使用,
如./list_1.html真實地址是/area/shanghia/list_1.html會變成/list_1.html,導至無法訪問
那我加上自動跳轉也是不行咯
(-d $request_filename)它有個條件是必需為真實目錄,而我的rewrite不是的,所以沒有效果
if (-d $request_filename){
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
知道原因後就好辦了,讓我手動跳轉吧
rewrite ^/([0-9a-z]+)job$ /$1job/ permanent;
rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;
17、檔案和目錄不存在的時候重定向:
if (!-e $request_filename) {
proxy_pass http://127.0.0.1;
}
18、域名跳轉
server
{
listen 80;
server_name jump.c1gstudio.com;
index index.html index.htm index.php;
root /opt/lampp/htdocs/www;
rewrite ^/ http://www.c1gstudio.com/;
access_log off;
}
19、多域名轉向
server_name www.c1gstudio.com www.c1gstudio.net;
index index.html index.htm index.php;
root /opt/lampp/htdocs;
if ($host ~ "c1gstudio/.net") {
rewrite ^(.*) http://www.c1gstudio.com$1 permanent;
}
20、三級域名跳轉
if ($http_host ~* "^(.*)/.i/.c1gstudio/.com$") {
rewrite ^(.*) http://top.yingjiesheng.com$1;
break;
}
相關推薦
Nginx跳轉的配置例項
相信大家在日常運維工作中如果你用到nginx作為前端反向代理伺服器的話,你會對nginx的rewrite又愛又恨,愛它是因為你搞定了它,完成了開發人員的跳轉需求後你會覺得很爽,覺得真的很強大,恨它是因為當一些稀奇古怪跳轉的需求時候你會沒有頭緒、百般除錯、上網求神拜佛都搞不
Nginx網站常見的跳轉配置實例
apache 多個 referer double 404錯誤 主域名 log AC filename 相信大家在日常運維工作中如果你用到nginx作為前端反向代理服務器的話,你會對nginx的rewrite又愛又恨,愛它是因為你搞定了它,完成了開發人員的跳轉需求後你會覺得很
『中級篇』docker之執行nginx跳轉到本地的jar並配置https(番外篇)(80)
>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!>原文連結地址:『中級篇』docker之執行nginx跳轉到本地的jar並配置https(番外篇)(80) 真實的環境,一個1核2g記憶體,安裝了mysql容器,java容器,nginx容器。具體安裝docker我就不說了,沒啥
『中級篇』docker之運行nginx跳轉到本地的jar並配置https(番外篇)(80)
ide 內部 鏈接 class and format 環境 keepaliv file >原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!>原文鏈接地址:『中級篇』docker之運行nginx跳轉到本地的jar並配置https(番外篇)(80) 真實的
nginx 301 302跳轉配置方法 與 總結
首先看一個完整程式碼示例,關於nginx 301 302跳轉的。 301跳轉設定: server { listen 80; server_name 123.com; rewrite ^/(.*) http://456.com/$1 permanent; access_log
Apache 域名跳轉配置
open none pro gpo inter val handler cli proxy 域名跳轉 就是實現URL的跳轉和隱藏真實地址,基於Perl語言的正則表達式規範。平時幫助我們實現擬靜態,擬目錄,域名跳轉,防止盜鏈等 。 參數格式 參數: Apache
Tomcat的HTTPS配置及HTTP自動跳轉配置
key 簽名 去掉 security div class span tro false 1.生成證書 (1)在jdk的安裝目錄\bin\keytool.exe下打開keytool.exe 在命令行中輸入以下命令: keytool -genke
nginx 跳轉www的方式
server { listen 80; server_name xxx.cn; rewrite ^(.*)$ https://www.${server_name}$1 permanent; } server { listen 80; server_name w
layui.msg指定時間後跳轉(程式碼例項)
在使用layui.msg()是,通常我們會有一個提示訊息,停留幾秒之後跳轉,用layui.msg的第二個引數就可以很簡單的實現,這裡馬克一下: //監聽提交 form.on('submit(formDemo)', function(data){ $.aj
SpringMVC-無需通過Controller的jsp跳轉配置
在spring-servlet.xml中 <!-- 定義無Controller的path<->view直接對映 --> <mvc:view-controller path="/" view-name="redirect:/accounts/login"
301重定向html網頁跳轉程式碼例項
方法/步驟 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.
CentOS6系統上Yii/Yii2/Nginx/PHP-FPM配置例項
Yii應用Apache的配置比較簡單,nginx的配置主要需要處理單一入口檔案的問題,也就是對應於Apache配置中的如下幾句:# if a directory or a file exists, us
Nginx負載均衡配置例項詳解
負載均衡是我們大流量網站要做的一個東西,下面我來給大家介紹在Nginx伺服器上進行負載均衡配置方法。 測試環境 測試域名 :www.threegroup.space A伺服器IP :123.56.255.173 (主) B伺服器IP :101.200.159.138 C
Nginx負載均衡配置例項
面對高併發的問題,企業往往會從兩個方面來解決。其一,從硬體上面,提升硬體的配置,增加伺服器的效能;另外,就是從軟體上,將資料庫和WEB伺服器分離,使資料庫和WEB伺服器都能夠充分發揮各自的效能,並且二者不相互影響。然而,這樣還不夠,一臺WEB伺服器可能無法承受太高的併發請求。那麼負載均衡技術就應運而生,下面我
關於nginx配置簡單例項-nginx配置反向代理和跳轉
要求實現的功能: 瀏覽器輸入這個: 地址自動變為 並且實際內容為如下的頁面內容 處理辦法: 1. 設定:server_name_in_redirect off; 注意: 如果如下設定: 則 不對自動加斜杆/ 變為 這點請特別注意 。
nginx證書制作以及配置https並設置訪問http自動跳轉https(反向代理轉發jboss)
app ast mime with cati permanent bsp location admin nginx證書制作以及配置https並設置訪問http自動跳轉https 默認情況下ssl模塊並未被安裝,如果要使用該模塊則需要在編譯時指定–with
nginx配置http跳轉https
文件 簡單 div 文件頭部 配置 gin list ... 需要 配置相當簡單,在配置文件頭部加一行,如下: server { listen *:80;//監聽80端口 return 301 htt
Nginx Https配置不帶www跳轉www
list cdh cat down crt http .com -a 301永久重定向 把 morethink.cn和www.morethink.cn合並到一個server上去,使用301永久重定向。 然後將 https://morethink.cn 轉到 https://
nginx 配置 ssl 及強制跳轉
null nginx 配置 .com class document nbsp .html usr share server { listen 80; server_name www.xxx.com; rewrite ^(.*) https:
nginx配置域名跳轉
gin 域名跳轉 cati include nginx 配置 roo perm 域名 ref nginx 配置主域名 xxx.com, 跳轉子域名 www.xxx.com server {listen 80;server_name www.xxx.com;