nginx url转发的一种方式

来源:互联网 发布:ddos攻击代码python 编辑:程序博客网 时间:2024/05/19 03:20

比如,以前是 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,或修改字符串。
指令根据配置文件中的顺序来执行。

  1. 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可以访问到(.*)中匹配到的值
  2. 它可以在server location 和 if 语句三个位置使用,使用方法相同

  3. if 语句的使用方法,应该是nginx rewrite使用的精髓,也是最复杂的,这里没用到,就先不介绍了。
0 0