我知道有很多这样的例子,但我只是想确定。 不幸的是我不能在接下来的几天内testing这个,所以我在这里问。
什么是这个位置的重写相当于?
location ~* /v1/device/(.*)/ { proxy_pass http://api.domain.com/api/v1.0/download/$1; }
我想基本上重写整个传入的请求,除了regex的部分。
我认为这是但我不确定:
location ~* /v1/device/(.*)/ { rewrite ^/v1/device/(.*)/ /api/v1.0/download/$1 break; proxy_pass http://api.domain.com; }
想知道是否有更干净的方式,而我不必在重写规则中重复/ v1 / device /。
谢谢
我不打扰在这里rewrite ,因为它只是nginx的额外工作…
但是,可以简单地使用以下内容:
location ~* /v1/device/(?<part>.*)/ { rewrite ^ /api/v1.0/download/$part break; proxy_pass http://api.domain.com; }
我们可以使用最短匹配任何string作为重写条件,因为条件已经在location块中匹配。 我们还将所需的部分捕获到$partvariables中,然后将其用于目标。
还有一点,你的正则expression式有点松散。 它匹配例如/sdhfdsah/v1/device/something/ajkldfkadsfjh/sdfhahfd/file.html 。 此外,它匹配/v1/device//something 。 我怀疑这是你打算如何工作,所以我build议你使用+而不是* ,并将开始(^)和结束($)锚定到正则expression式。