如何利用Nginx实现路径匹配
2018-11-13 本文已影响0人
幽遊世外
首先,假设我们已经有一台可用的Nginx,这个时候,如果我们需要专门匹配用户端的带某一特殊路径的请求,并转发到服务器A和服务器B,则可以为Nginx的配置文件修改为:
upstream Serv {
ip_hash;
server {服务器A的IP和端口};
server {服务器B的IP和端口};
}
server {
listen 80;
server_name lb_1;
location /matchedURL/ {
proxy_pass http://Serv/targetURL/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
}
这里Serv代表具体处理请求的服务器信息,可以是一台也可以使多台,处理规则可自己定义,详情请参考:
https://www.cnblogs.com/henghengdh/articles/3524058.html
location的后面需要加上你需要匹配的路径的规则,这里可以自己定义,比如,https://news.sina.com.cn/world/中的world就代表新浪新闻中的国际新闻版块,可以根据具体功能进行划分,也可以根据来源划分等等
location中需要注意的是,proxy_pass 后面需要加上http://Serv代表所有流量均流入Serv中定义的服务器,而targetURL则是这些服务中所具备的原有的上下文,如果没有的话可以不填,有的话不能填在Serv中,因为会报格式错误
proxy_set_header Host $host; 是必须有的,不然无法生效
proxy_set_header X-Real-IP $remote_addr; 则是用来记录请求来源的IP地址,可以配合proxy_set_header X-Forwarded-For一起使用
这么写配置文件,当终端访问www.你的域名.com/matchedURL/...的时候,就能能够直接定向到服务器A或服务器B中的/targetURL服务