在nginx中添加和使用标头(HTTP)

  • 本文关键字:HTTP nginx 添加 http nginx
  • 更新时间 :
  • 英文 :


我正在使用两个系统(两个是Nginx负载均衡器,一个充当备份)。

我想添加和使用几个 HTTP 自定义标头。

以下是我的代码:

upstream upstream0 {
    #list of upstream servers
    server backend:80;
    server backup_load_balancer:777 backup;
    #healthcheck
}
server {
    listen 80;
    #Add custom header about the port and protocol  (http or https)
    server_name _;
    location / {
        # is included since links are not allowed in the post
        proxy_pass "http://upstream0;"
    }
}

备份系统

server {
    listen 777;
    server_name _;
    #doing some other extra stuff
    #use port and protocol to direct
}

我怎样才能做到这一点?

若要添加标头,请将add_header声明添加到location块或server块:

server {
   add_header X-server-header "my server header content!";
   location /specific-location {
       add_header X-location-header "my specific-location header content!";
   }
}

location块中的add_header声明将覆盖外部server块中的相同add_header声明。例如,如果location包含add_header X-server-header ...,则会覆盖该路径位置的外部声明。

显然,将值替换为要添加的值。仅此而已。

您可以使用上游标头(以 $http_ 开头命名)和其他自定义标头。例如:

add_header X-Upstream-01 $http_x_upstream_01;
add_header X-Hdr-01  txt01;

接下来,转到控制台并使用用户的标头发出请求:

curl -H "X-Upstream-01: HEADER1" -I http://localhost:11443/

响应包含由服务器设置的 X-Hdr-01 和由客户端设置的 X-Upstream-01:

HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Mon, 30 Nov 2015 23:54:30 GMT
Content-Type: text/html;charset=UTF-8
Connection: keep-alive
X-Hdr-01: txt01
X-Upstream-01: HEADER1

最新更新