Nginx proxy_pass仅用于'/'路由,带有$http_accept

mwg9r5ms  于 2022-11-21  发布在  Nginx
关注(0)|答案(1)|浏览(157)

这背后的原因是,如果客户端从我的应用程序的主页请求Content-Type: application/ld+json,那么查询应该被重定向到一个API,它将提供服务。因此,我有这样的东西:

location / {
        if ($http_accept = 'application/ld+json') {
            proxy_pass https://api.example.org/homepage_jsonld/;
        }

        root /var/www/example.org/dist;

        try_files $uri $uri/ /index.html;
    }

...这会导致:

nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block

理想情况下,我只需要在请求的路由是'/'时使用proxy_pass,并将任何其他路由传递到/var/www/ www.example.com中的应用程序example.org/dist。

iqjalb3h

iqjalb3h1#

答案竟是这样:

location = '/' {
        if ($http_accept = 'application/ld+json') {
                rewrite "^/" /homepage_jsonld break; 
                proxy_pass https://api.example.org;
        }
      
        root /var/www/example.org/dist;
        try_files $uri $uri/ /index.html;
    }

...除了现有的location /块之外。

相关问题