Using add_header at server level context

Francis Daly francis at
Mon Sep 30 14:30:06 UTC 2013

On Mon, Sep 30, 2013 at 03:42:50PM +0200, Thijs Koerselman wrote:

Hi there,

> From the add_header docs I understand that it works at location, http and
> server context. But when I use add_header at the server level I don't see
> the headers being added to the response.

> Am I missing something or is this just not working at the server level for
> some reason?

You're missing something.

You're either missing that if the second argument to add_header expands
to empty, then the header is not added; or that configuration directive
inheritance is by replacement, not addition.

  server {
    listen 8080;
    add_header X-Server server-level;
    add_header X-Surprise $http_surprise;

    location /one {
      return 200 "location one";
    location /two {
      return 200 "location two";
      add_header X-Location two;

Compare the outputs you actually get from

  curl -i

  curl -i

  curl -i -H Surprise:value

with what you expect to get.

Francis Daly        francis at

More information about the nginx mailing list