Назад | Перейти на главную страницу

nginx add_header не работает ни в одном из моих местоположений

Я использую 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";.