小编Thi*_*ilo的帖子

通过 nginx 代理 http 错误时,http 标头消失

我在 Apache 2.4 服务器前面使用 nginx 作为 TLS 终止符。

add_header X-Content-Type-Options nosniff;在 nginx 中使用此标头添加到每个响应中。

如果 Apache 返回的 HTTP 状态代码低​​于 400,则标头设置正确,但如果状态大于或等于 400,则标头被忽略。

gzip 模块也是如此。如果状态代码低​​于 500,gzip 模块会自动压缩响应正文。但是,如果 Apache 获取的 HTTP 状态代码大于或等于 500,则 gzip 模块将不执行任何操作。

我的 nginx 配置的一些相关部分:

proxy_intercept_errors    off;
proxy_ignore_client_abort off;
proxy_http_version        1.1;
proxy_hide_header         X-Powered-By;
proxy_set_header          Connection  "";     #for keepalive to backend
add_header X-Content-Type-Options nosniff;

### gzip ###
gzip on;
gzip_min_length 20;     #default: 20
gzip_comp_level 9;
gzip_proxied any;
gzip_vary on;
gzip_types *;
gunzip on;
Run Code Online (Sandbox Code Playgroud)

我可以采取什么措施来停用此行为并将标头添加到 HTTP 错误响应甚至 gzip HTTP 500 响应中?

nginx proxy http-headers 500-error 400

4
推荐指数
1
解决办法
3587
查看次数

标签 统计

400 ×1

500-error ×1

http-headers ×1

nginx ×1

proxy ×1