【问题标题】:nginx rewrite questionnginx重写问题
【发布时间】:2010-10-01 01:48:23
【问题描述】:

如果第二个文件存在,我需要用 nginx 从 /blah/.../3275 重写到 /id/3275,否则我想把它交给 apache。这是我的(微弱的)尝试

(...) 代表不相关的东西

if ($request_filename ~^/.../([0-9]+)/$) {
               if (-d /id/$1) {
                        rewrite ^/.../[0-9]+/([0-9]+)/$ /id/$1;
                }
        }

大家有什么想法吗

【问题讨论】:

    标签: url-rewriting nginx


    【解决方案1】:

    最好通过内部重写来做到这一点:

    set $original_uri $uri;
    
    location /blah/irrelevant_stuff {
       error_page 404 = @apache;
       rewrite ^/blah/irrelevant_stuff/([0-9]+)$ /id/$1;
    }
    
    location @apache {
       proxy_pass http://upstream$original_uri;
    }
    

    【讨论】:

    • 非常好。我没有意识到你可以这样保存原始 uri。我试试看
    【解决方案2】:

    以上来自 wulong 的回答我由于某种原因无法上班,但我确实通过使用它来工作

      if (!-e $request_filename) {
        proxy_pass http://apache$original_uri;
        break;
      }
    

    而不是 error_page 指令。基本相同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多