0

包括nginx.conf以下内容

     location /beta/ {
        proxy_pass http://otherhost/;
      }

那么以下两个检索工作:

  • curl -H 'User-Agent: Mozilla' http://localhost/beta/admin.html
  • curl -H 'User-Agent: iPhone' http://localhost/beta/admin.html

他们都检索http://otherhost/admin.html

当我将 nginx.conf 更改为:

     location /beta/ {
        if ($http_user_agent ~ iPhone ) {
        }
        proxy_pass http://otherhost/;
      }

然后curl -H 'User-Agent: Mozilla' http://localhost/beta/admin.html继续工作,但 curl -H 'User-Agent: iPhone' http://localhost/beta/admin.html给出 404 和 otherhost 抱怨它没有一个名为beta/admin.html. if无论是否为空,都会发生这种情况。

嗯?

4

1 回答 1

0

您被一个已知问题所困扰:If is evil in nginx,这意味着如果可能的话,请避免if-blocks 内location的 -blocks (链接解释了原因和方式)

于 2013-02-07T06:39:30.980 回答