Nginx-基础篇-5【UrlRewrite】
本文最后更新于 2023-09-19,文章内容可能已经过时。
1. UrlRewrite
1.1. rewrite语法格式及参数语法
要注意 rewrite
要放在 proxy_pass
前面,否则 rewrite
不生效
rewrite
是实现URL重写的关键指令,根据regex
(正则表达式)部分内容,
重定向到replacement
,结尾是flag
标记。
rewrite <regex> <replacement> [flag];
关键字 正则 替代内容 flag
标记
关键字:其中关键字error_log
不能改变
正则:perl兼容正则表达式语句进行规则匹配
替代内容:将正则匹配的内容替换成replacement
flag
标记:rewrite支持的flag
标记,这里记住不加flag标记可能会出现反向代理无效
rewrite
参数的标签段位置:
server
,location
,if
flag
标记说明:
last
#本条规则匹配完成后,继续向下匹配新的location URI规则
break
#本条规则匹配完成即终止,不再匹配后面的任何规则
redirect
#返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent
#返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
301 的重定向会记录到浏览器缓存,下次无需 Nginx 也能直接跳转;302 不会记录到缓存,必须先要过 Nginx 才能跳转
实例 利用rewrite实现了伪静态
location / {
rewrite ^/([0-9]+).html$ /index.jsp?pageNum=$1 break;
proxy_pass http://192.168.110.104:8080;
}
1.2. 负载均衡 + UrlRewrite
应用服务器防火墙配置
开启防火墙——重启防火墙
systemctl start firewalld
systemctl restart firewalld
重载规则
firewall-cmd --reload
查看已配置规则
firewall-cmd --list-all
指定端口和ip访问【这里指的就是我们反向代理的服务器 加了 --permanent 相当于是永久规则】
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.44.101"
port protocol="tcp" port="8080" accept"
移除规则
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.44.101" port port="8080" protocol="tcp" accept"
网关配置
upstream httpds {
server 192.168.44.102 weight=8 down;
server 192.168.44.103:8080 weight=2;
server 192.168.44.104:8080 weight=1 backup;
}
# 虚拟主机 vhost
server {
listen 80;
server_name www.fanxy.cloud;
location / {
rewrite ^/([0-9]+).html$ /index.jsp?pageNum=$1 redirect;
proxy_pass http://httpds;
}
}
起到了网关服务器的作用
- 感谢你赐予我前进的力量