Nginx代理 - 从上游返回最后修改的头

时间:2015-04-16 21:03:46

标签: nginx reverse-proxy

我有Nginx充当代理服务器的问题: 请求 - > NGINX PROXY - >应用服务器(只有一个)

代理服务器正在侦听端口443和80上的应用程序服务器。上游服务器返回的标头正被代理删除。我被迫使用:

add_header 'Content-Length' $upstream_http_content_length;

它适用于Content-Length,但它不适用于Last-Modified标头。来自Nginx代理的使用私有IP到上游的卷曲请求返回所有标头。为什么Nginx代理会删除此标题,即使它的返回是使用add_header指定的?

我有以下nginx.conf示例:

location /some-web-app {
                    proxy_pass http://backend/some-web-app;
                    proxy_redirect off;
                    proxy_redirect http $scheme;
                    proxy_set_header Host $host;
                    add_header 'Last-Modified' $upstream_http_last_modified;
                    add_header 'Content-Length' $upstream_http_content_length;
                    sub_filter 'codebase="http' 'codebase="https';
                    sub_filter_types application/x-java-jnlp-file;
                    access_log /var/log/nginx/some-web-app_access.log combined_jsession_upstream;
                    error_log /var/log/nginx/some-web-app_err.log;
                    auth_basic            "Restricted";
                    auth_basic_user_file  /etc/nginx/htpasswd;
            }

1 个答案:

答案 0 :(得分:0)

在位置块中转发返回的最后修改标头put following指令:

data =  analytics.data().ga().get(tableID, // Table Id.
                            startDate, // Start date.
                            endDate, // End date.
                            metrics).setDimensions(dimensions).setSamplingLevel("DEFAULT").setStartIndex(1).setMaxResults(1000).setOutput("json")
                            .setFields(fields).execute();

要使用sub_filter_last_modified on 转发任何其他标头使用add_header。在这里,我将转发Content-Length标题:

$upstream_http_${header}