在 NGINX 负载均衡器中保留响应头

Pan*_*amo 5 nginx reverse-proxy load-balancing ibm-domino

我以这种方式将 NGINX 设置为两个 Domino 服务器的负载平衡器:

http {

    upstream www.mydomain.com {
      server 1.1.1.1;
      server 2.2.2.2 backup;
    }

    server {
        listen       80;
        server_name  www.mydomain.com;

        location / {
            proxy_pass http://www.mydomain.com;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我直接访问 Domino 服务器,响应头是这些:

HTTP/1.1 200 OK
Server: Lotus-Domino
Date: Mon, 23 Dec 2013 12:19:36 GMT
Last-Modified: Fri, 20 Dec 2013 08:16:27 GMT
Content-Type: text/html; charset=US-ASCII
Content-Length: 12713
Cache-control: private
ETag: W/"MTAtODEwRC1DMjI1N0MzRDAwN0M3NTBCLUMyMjU3QzQ3MDAyRDczMzktMC1DTj1QYW51IEhhYXJhbW8vTz1BQUQ="
Run Code Online (Sandbox Code Playgroud)

当我通过 NGINX 访问同一页面时,响应头是这些:

HTTP/1.1 200 OK
Server: nginx/1.0.15
Date: Mon, 23 Dec 2013 12:02:29 GMT
Content-Type: text/html; charset=US-ASCII
Connection: keep-alive
Last-Modified: Mon, 23 Dec 2013 12:20:47 GMT
Expires: Tue, 01 Jan 1980 06:00:00 GMT
Content-Length: 12713
Run Code Online (Sandbox Code Playgroud)

我可以将 NGINX 配置为完全按照直接从 Domino 获取响应标头的方式传递响应标头吗?我知道我可以像这样一一设置其中的一些:

proxy_pass_header Server;
Run Code Online (Sandbox Code Playgroud)

但例如,ETag即使这样也不会通过。

小智 2

例如,很可能 nginx 由于启用了 gzip 而修改了来自上游的响应。您可以在这里找到更多信息。