V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
rootx
V2EX  ›  NGINX

求一个 nginx url 重写配置

  •  
  •   rootx · 2017-09-19 23:23:15 +08:00 · 2860 次点击
    这是一个创建于 2625 天前的主题,其中的信息可能已经有所发展或是发生改变。

    默认重写规则:

    
    if (!-e $request_filename) {
    	rewrite  ^(.*)$ /index.php?s=$1 last;
    	break;
    }
    

    需求:

    将如下 “ www.test.com/key/其他参数” 重写成 “ key.m.test.com/其他参数” 但最终“其他参数”还是要走"/index.php?s=$1"

    已经写的(判断 www ):

    
    if ($request_uri ~* '~^www\.[a-z0-9\-]+?\.[a-z]/(.*)/+') {
        //不知道该如何写
    }
    

    求助求助求助

    4 条回复    2018-11-14 14:05:26 +08:00
    0ZXYDDu796nVCFxq
        1
    0ZXYDDu796nVCFxq  
       2017-09-19 23:49:23 +08:00 via iPhone
    你这已经是不同域名了
    要么反代,要么 301 302 跳转
    没有这种写法
    lework
        2
    lework  
       2017-09-20 09:27:24 +08:00
    server {
    listen 80;
    server_name www.test.com;
    location /key {
    proxy_pass http://key.m.test.com/key$request_uri;
    }
    }
    lework
        3
    lework  
       2017-09-20 09:32:42 +08:00
    ```
    server {
    listen 80;
    server_name 345;
    location /key/(/.*) {
    proxy_pass http://123/$1$is_args$args;
    }
    }
    ```
    应该是这个
    gotea456
        4
    gotea456  
       2018-11-14 14:05:26 +08:00
    这个问题是因为 proxy_pass 的用法不正确,这个指令的参数含有 url 或者不含 url,比如:
    proxy_passhttp://127.0.0.1:8888/web-test/; 以及 proxy_passhttp://127.0.0.1:8888;
    这两种写法,会导致发到上游的 url 与原始 url 大不一样!
    拿问题中的 location ^~ /test/ {}这个配置,当参数含有 url 时(使用 proxy_passhttp://127.0.0.1:8888/web-test/;配置),比如请求是 /test/resource/1.jpg ,实际转发到上游的请求是 /web-test/resource/1.jpg ,它是把 location 匹配以外剩余的 URL 拼接到 proxy_pass 指定 URL 的后面。
    而当 proxy_pass 指令的参数只有域名,不 含有 url 时(使用 proxy_passhttp://127.0.0.1:8888;配置),针对同样的请求 /test/resource/1.jpg ,实际转发到上游的请求 url 仍然是 /test/resource/1.jpg 。
    因此一定要注意 proxy_pass 后面的参数是否包含 url,它会影响转发到上游请求中 url 是否变化。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3463 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:05 · PVG 19:05 · LAX 03:05 · JFK 06:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.