Nginx URL重写(rewrite)配置
指尖二进制 • 1 年前 • 740 次点击 • NGINX
url重写是指通过配置conf文件,让网站的url中达到某种状态时则定向/跳转到某个规则。
重写URL是非常有用的一个功能,因为它可以提高搜索引擎阅读和索引网站能力;而且在改变了网站的结构后,无需要求用户修改他们的书签,无需其他网站修改它们的友情链接;还可以提高网站的安全性;而且通常会让网站更加便于使用和更专业。
优点:
1:缩短url,隐藏实际路径提高安全性。
2:易于用户记忆和键入。
3:易于被搜索引擎收录。
rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement(替代内容),结尾是flag标记。
rewrite <regex> <replacement> flag(可选)
关键字 正则 替代内容 标记(可选)
flag标记可以使用以下几种格式:
last -基本上都用这个
break -终止Rewirte,不在继续匹配
redirect -返回临时重定向的HTTP状态302
permanent -返回永久重定向的HTTP状态301
regex常用正则表达式说明:
字符 | 描述 |
---|---|
\ | 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“\$”则匹配“$” |
^ | 匹配输入字符串的起始位置 |
& | 匹配输入字符串的结束位置 |
* | 匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” |
+ | 匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“oll”,但不能匹配“o” |
? | 匹配前面的字符零次或一次,如“do(es)?”能匹配“do”活着“does”,“?”等小于“{0,1}” |
. | 匹配除“\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式 |
(pattern) | 匹配括号内pattern并可以在后面获取对应的匹配,常用$0...$9属性获取小括号中的匹配内容,要匹配圆括号字符需要\(Content\) |
需要两台服务器:
192.168.43.2
192.168.43.50
使用url重写机制之后就不是web服务了,把这个链接写到其他的服务器上。
所以需要把server段的web功能注释掉:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.a.com;
location / {
#root html; #注释掉web功能
#index index.html index.htm; #注释掉web功能
rewrite ^/$ http://192.168.43.50; #所有访问www.a.com的client都将跳转到192.168.43.50
}
}
}
重启nginx
浏览器访问www.a.com会自动跳转到192.168.43.50