在平常運維中常常會碰到須要從一個連接跳轉到另外一個連接的狀況,此類需求分爲兩種狀況,一種是瀏覽器url變,一種是瀏覽器url不變。php
1、Url變,使用nginx rewirte模塊html
rewrite是實現URL重寫的關鍵指令,根據regex(正則表達式)部份內容,重定向到replacement,結尾是flag標記。mysql
flag標記分爲下面四種:nginx
last #本條規則匹配完成後,繼續向下匹配新的location URI規則正則表達式
break #本條規則匹配完成即終止,再也不匹配後面的任何規則sql
redirect #返回302臨時重定向,瀏覽器地址會顯示跳轉後的URL地址api
permanent #返回301永久重定向,瀏覽器地址欄會顯示跳轉後的URL地址瀏覽器
常使用301 來實現url地址跳轉功能。session
2、URL,地址不變,使用location 和rewrite模塊都可app
lcaotion 的proxy_pass模塊;或者使用rewrite的last和break都可以上線此功能。
(1)、配置
將請求路徑https://api.gwhome.com/data/app跳轉到https://images.com/data/app/gw.html頁面。
server {
listen 443;
server_name gwhome
access_log /data/nginx/logs/gwhome-access.log main;
error_log /data/nginx/logs/gwhome-error.log;
ssl on;
ssl_certificate /data/nginx/ssl/gwhome.crt;
ssl_certificate_key /data/nginx/ssl/gwhome.key;
ssl_session_timeout 5m;
location = /data/app{
rewrite /data/app /data/app/gw.html break;
proxy_pass https://images.com;
}
}
(2)、配置
將訪問192.168.210.85:8190/gwgou/order/commdany的請求跳轉到192.164.60.89:8089/order/commdany
server {
listen 8190;
server_name 192.168.210.85;
index index.html index.php index.htm;
location ~* ^/gwgou/order/commdany {
proxy_next_upstream error timeout http_503 http_504 http_502;
proxy_connect_timeout 500s;
proxy_read_timeout 500s;
proxy_send_timeout 500s;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^(.*)$ /order/commdany break;
proxy_pass http://192.164.60.89:8089;
}
}
推薦閱讀