【发布时间】:2018-09-21 08:31:27
【问题描述】:
我有以下 NGINX 配置:
- location /concepts {
auth_basic "off";
if ($http_accept ~ 'application/json') { set $isapirequest "true"; }
if ($http_accept ~ 'application/ld\+json') { set $isapirequest "true"; }
if ($http_accept ~ 'application/hal\+json') { set $isapirequest "true"; }
if ( $isapirequest = "true" ) { proxy_pass http://127.0.0.1:5315/search/concepts/; }
if ( $isapirequest != "true" ) {
rewrite ^/concepts$ /concepts/ redirect;
rewrite ^(.*)$ /blah$1 last;
}
include add_cors_headers_OPTIONS_HEAD_GET_PUT_DELETE;
}
我得到的错误是:
\"proxy_pass\" cannot have URI part in location given by regular expression, or inside named location, or inside \"if\" statement, or inside \"limit_except\"
你们能想到在 NGINX 上不使用“if”语句的任何方式来实现上述目标吗?
【问题讨论】:
-
改用
rewrite...last,并在不同的location块中处理proxy_pass。 -
@Richard Smith,我刚刚更新了我的问题 - 对此感到抱歉。有什么想法吗?
标签: if-statement nginx configuration proxypass