比如,以前是 http://vampire.com/elasticsearch
现在要转到http://vampire.com/search
配置如下:
upstream localhost {
server 127.0.0.1:8080 max_fails=7 fail_timeout=7s;
server 127.0.0.1:8081 max_fails=7 fail_timeout=7s;
}
server {
listen 81;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://localhost;
rewrite /elasticsearch/(.*) /search/$1;#elasticsearch 转发到 sesarch
}
}
rewrite /elasticsearch/(.*) /search/$1;
可以写在location外面,即:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://localhost;
}
rewrite /elasticsearch/(.*) /search/$1;#elasticsearch 转发到 sesarch
}
解释:
nginx 的 rewrite 语法
语法: rewrite regex replacement flag
默认: none
作用域: server, location, if
此指令根据表达式来更改URI,或修改字符串。
指令根据配置文件中的顺序来执行。
-
rewrite 正则表达式 替换值 标记
- 正则表达式 ,此处用于匹配url,此url为相对路径,即:如果你的访问路径是
http://www.vampire.com/elasticsearch/getAllUser?token=xxxxxxxx
,那么在此处的值就是:/elasticsearch/getAllUser?token=xxxxxxxx
。正则表达式中,一个括号内是一个值,这些值在“替换值”中可以使用1 99使用,稍后介绍。 - 替换值 即用此值替换正则表达式匹配的值。此处可以使用相对路径或者绝对路径,即可以写
http://www.vampire.com/search/
,也可以写/search/
。 - 标记 break,last,redirect,permanent 有四个值,见文:Nginx中的rewrite指令(break,last,redirect,permanent)
- 当在正则表达式中使用
/elasticsearch/(.*)
后,在替换值中,使用$1
可以访问到(.*)
中匹配到的值
- 正则表达式 ,此处用于匹配url,此url为相对路径,即:如果你的访问路径是
它可以在server location 和 if 语句三个位置使用,使用方法相同
- if 语句的使用方法,应该是nginx rewrite使用的精髓,也是最复杂的,这里没用到,就先不介绍了。