在日常运维中经常会碰到需要从一个链接跳转到另一个链接的情况,此类需求分为两种情况,一种是浏览器url变,一种是浏览器url不变。
一、Url变,使用nginx rewirte模块
rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记。
flag标记分为下面四种:
last #本条规则匹配完成后,继续向下匹配新的location URI规则
break #本条规则匹配完成即终止,不再匹配后面的任何规则
redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
常使用301 来实现url地址跳转功能。
二、URL,地址不变,使用location 和rewrite模块均可
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;
}
}
推荐阅读
Nginx访问控制
Kafka 集群部署
Redis搭建哨兵
mysqldump+binlog恢复被删除的数据
完整的二进制安装Kubernetes高可用集群