我正在使用两个系统(两个是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