Добавить заголовок к ответу в директиве местоположения nginx
Я пытаюсь добавить заголовок ответа только к одному указанному пути, и у меня есть конфигурация nginx
server {
...
add_header x-test test;
location /my.img {
rewrite ^/my.img$ /119.img;
add_header x-amz-meta-sig 1234567890abcdef;
}
}
Но эффективен только заголовок верхнего уровня (x-test), который внутри директивы location не отображается так, как показано в
$ curl -v -o /tmp/test.img 'https://www.example.com/my.img'
< HTTP/1.1 200 OK
< Server: nginx/1.9.3 (Ubuntu)
< Date: Sun, 14 May 2017 23:58:08 GMT
< Content-Type: application/octet-stream
< Content-Length: 251656
< Last-Modified: Fri, 03 Mar 2017 04:57:47 GMT
< Connection: keep-alive
< ETag: "58b8f7cb-3d708"
< x-test: test
< Accept-Ranges: bytes
<
{ [16104 bytes data]
Как отослать обратно пользовательский headrr только для конкретного обслуживаемого файла.
1 ответ
rewrite
утверждение является неявным rewrite...last
, что означает, что окончательный URI /119.img
не обрабатывается этим location
блок. К тому времени, когда заголовки ответа вычисляются, nginx
в другом location
блок.
Вы можете попробовать обработать окончательный URI из того же блока местоположения, используя rewrite...break
заявление. Смотрите этот документ для деталей.
location = /my.img {
root /path/to/file;
rewrite ^ /119.img break;
add_header x-amz-meta-sig 1234567890abcdef;
}
Если location
предназначен для соответствия только одному URI, используйте =
формат. Смотрите этот документ для деталей.
Отметим также, что наличие add_header
утверждение в этом location
блок, будет означать, что внешний оператор больше не будет наследоваться. Смотрите этот документ для деталей.: