Я использую nginx 1.10.1 с конфигурацией, подобной этой:
server {
(...)
add_header Header1 "value";
(...)
# in this location above add_header directive works
location / {
uwsgi_pass unix:/var/run/some.sock;
(...)
}
# ..and it this one it doesn't!
location ~* (^/$|favicon.ico|robots.txt) {
return 204;
expires 24h;
add_header Cache-Control "public";
etag on;
}
}
..поэтому моя проблема в том, что Header1 установлен для запросов, обрабатываемых 1-м местоположением, но не для 2-го.
Зачем?
я прочитал add_header
docs и знайте, что по умолчанию он работает только для «положительных» кодов возврата, но 204 является одним из них (я действительно тестировал изменение кода на 200, 404, и это не помогло).
(Я также пытался добавить always
к моему add_header Header1 ...
но это была довольно отчаянная попытка, поскольку она не должна была помочь - и не помогло.)
Документация состояния:
Эти директивы наследуются от предыдущего уровня тогда и только тогда, когда на текущем уровне не определены директивы add_header.
Наличие add_header Cache-Control "public";
предотвращает наследование этого блока add_header Header1 "value";
.