标签: http-headers

NGINX 直通服务器标头

如何让 NGINX 通过上游服务器的“服务器”标头?

就像,如果 NGINX 代理到服务器标头为“Apache2.2 (CentOS)”的 Apache 服务器,它会将其剥离并替换为“NGINX/1.0.1”。我们在 Server: 头中有我们的机器 ID,所以我们需要让 NGINX 停止覆盖它们。

nginx http-headers

4
推荐指数
2
解决办法
3844
查看次数

是否可以通过 Content-Type 将请求路由到不同的应用程序?

我正在设计一个 JSON API,我想使用某种内容协商来对 API 进行版本控制。我目前正计划使用供应商 MIME 类型来执行此操作。

虽然我绝对可以在应用程序级别执行此操作,但我认为最好在 HTTP 服务器级别执行此操作。这可能与 Apache 或 nginx 一起使用吗?

Content-Type 看起来像:application/vnd.vendorname-v1+json 或者可能使用参数:application/vnd.vendorname+json;v=1

linux nginx http-headers apache-2.2

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

Apache - 禁用范围请求 - 缺点?

由于有一个针对 Apache 字节范围实现的有效漏洞(CVE-2011-3192,请参见此处),我想禁用它,直到我的发行版(Debian、Ubuntu)随附官方补丁。这些网站都是没有大量下载的“普通”网站。除了无法恢复下载之外,禁用该功能还有什么缺点吗?

PS。:我通过mod_headers使用以下行启用和取消设置范围标题来禁用该功能:

RequestHeader unset Range
Run Code Online (Sandbox Code Playgroud)

security exploit http-headers apache-2.2

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

使用 nginx 进行 Gzip 压缩

在我的 nginx.conf 中,我有:

gzip              on;
gzip_static       on;
gzip_buffers      16 8k;
gzip_comp_level   9;
gzip_http_version 1.0;
gzip_min_length   1000;
gzip_types        text/plain text/css image/x-icon image/bmp image/png image/gif image/jpeg image/jpg application/json application/x-javascript text/javascript;
gzip_vary         on;
gzip_proxied any;
Run Code Online (Sandbox Code Playgroud)

所以,如果我在我的服务器上获取图片的标题:

spiroo@glamdring:~$ curl -I http://static.mysite.com/g/pics/big_6e1855d844ebca560379139e75942f669655f.jpeg
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 04 Apr 2013 13:00:20 GMT
Content-Type: image/jpeg
Content-Length: 5336
Last-Modified: Mon, 25 Mar 2013 13:28:02 GMT
Expires: Fri, 04 Apr 2014 13:00:20 GMT
Cache-Control: max-age=31536000
Pragma: public
Cache-Control: public, must-revalidate, proxy-revalidate
Accept-Ranges: bytes
Run Code Online (Sandbox Code Playgroud)

但是如果我在 nginx.conf 中关闭 …

compression nginx gzip http-headers

4
推荐指数
2
解决办法
2万
查看次数

IIS http 状态代码 404.503 的含义是什么?

Microsoft 在此处列出了 IIS http 状态代码,包括子状态代码。

在 404 部分有 0 到 20 之间的子状态代码,但在我的日志中,我得到 503 作为 sc-substatus

我找不到任何关于它的信息。不要将此与标准的 http 503(服务不可用)状态混淆。

http-headers iis-8.5 iis-10

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

是否有链接 x-forwarded-for 标头的标准?

IETF RFC 2616 第 4.2 节允许请求包含具有相同字段名称的多个标头,只要保留插入的时间顺序,并且它们的值可以转换为具有逗号分隔值列表的单个标头。

http://tools.ietf.org/html/rfc2616#section-4.2

当且仅当该头字段的整个字段值被定义为逗号分隔列表[即,#(values)] 时,消息中可能存在具有相同字段名的消息头字段。通过将每个后续字段值附加到第一个字段值,每个字段值用逗号分隔,必须可以将多个标题字段组合成一个“字段名称:字段值”对,而不改变消息的语义。因此,接收具有相同字段名的头字段的顺序对组合字段值的解释很重要,因此当转发消息时,代理不得更改这些字段值的顺序。F5 不会覆盖任何现有的 X-Forwarded-For。它也不会将现有的 X-Forwarded-For 连接成一个逗号分隔的值。反而,

但是,如果环境中有多个客户端、代理、CDN、流量管理器、参与操作X-Forwarded-For集合的服务器呢?

执行统一的做法似乎有好处。但最佳实践是什么?

F5 BIG-IP 默认 http 配置文件插入标头X-Forwarded-For在请求的预先存在的 XFF 标头集合的末尾累积一个附加标头,以保留顺序。

AWS ELB 鼓励将传入请求的多个X-Forwarded-For合并到一个包含以逗号分隔的 XFF IP 列表以及用户主机地址的单个标头中,以保留顺序。

其他设备可以采用其他变体。

是否存在针对异构环境的商定建议或事实上的标准?

此外,是否提供了任何时间戳数据,以允许代码X-Forwarded-For在先前对 XFF 标头的操作可疑的情况下按添加的时间顺序对标头进行明确排序。

http-headers haproxy f5-big-ip x-forwarded-for amazon-elb

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

Nginx 反向代理透传客户端证书

我正在尝试通过 Nginx 反向代理设置负载均衡器。我的应用程序使用客户端证书来验证客户端。我希望我的反向代理将客户端证书转发到我的后端服务器。我已将此行添加到反向代理的配置中,以将客户端证书信息存储在自定义 HTTP 标头中:

proxy_set_header X-SSL-CERT $ssl_client_cert
Run Code Online (Sandbox Code Playgroud)

但是,$ssl_client_cert使用多行来存储证书,并且我的后端 nginx 服务器无法将其正确识别为一个 HTTP 标头。实现转发我的客户证书的最佳方法是什么?

这个问题在 2013 年在这个论坛上被问过,但到目前为止还没有真正的解决方案:https : //forum.nginx.org/read.php?2,236546,236546

谢谢!

ssl nginx https reverse-proxy http-headers

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

nginx add_header 在我的位置之一不起作用

我使用 nginx 1.10.1 与类似的配置:

server {

    (...)

    add_header Header1 "value";

    (...)

    # in this location above add_header directive works
    location / {
         uwsgi_pass unix:/var/run/some.sock;

         (...)
    }

    # ..and it this one it doesn't!
    location ~* (^/$|favicon.ico|robots.txt) {
        return 204;
        expires 24h;
        add_header Cache-Control "public";
        etag on;
    }
}
Run Code Online (Sandbox Code Playgroud)

..所以我的问题是 Header1 是为第一个位置处理的请求设置的,但不是为第二个位置设置的。

为什么?

我已经阅读了add_header文档并知道它默认仅适用于“正”返回代码,但 204 是其中之一(我实际上已经测试过将代码更改为 200、404 并且没有帮助)。

(我也尝试添加always到我的add_header Header1 ...但这是一个相当绝望的尝试,因为它不应该有帮助 - 而它没有。)

http nginx http-headers

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

nginx:多个匹配的位置块

我尝试设置 max-age 标头指令和 Content-Disposition “附件”如下:

location / {

    # set up max-age header directive for certain file types for proper caching
    location ~* \.(?:css|js|ico|gif|jpe?g|png|mp3|mpeg|wav|x-ms-wmv|eot|svg|ttf|woff|woff2)$ {
        expires 7d;
        add_header Cache-Control "public";
    }

    # force download for ceratain file types
    location ~* \.(?:fb2|mobi|mp3)$ {
         add_header Content-Disposition "attachment";
    }
...
}
Run Code Online (Sandbox Code Playgroud)

问题在于 .mp3 文件与两个位置块都匹配。仅使用第一个 (max-age)。我怎样才能同时拥有 .mp3 文件 - max-ageContent-Disposition “附件”?

nginx regex http-headers regular-expressions

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

Nginx 中的 HSTS:是否也应该在子域服务器块中添加 Strict-Transport-Security 标头?

让我们采取以下nginx.conf与配置文件server的块example.comsubdomain.example.com

http {
    ...

    server {
        listen [::]:80 ipv6only=off default_server;
        server_name example.com;
        return 301 https://example.com$request_uri;
    }
    server {
        listen [::]:443 ipv6only=off ssl default_server;
        server_name example.com;
        add_header Strict-Transport-Security
            "max-age=63072000; includeSubDomains; preload" always;
        ...
    }

    server {
        listen [::]:80 ipv6only=off;
        server_name subdomain.example.com;
        return 301 https://subdomain.example.com$request_uri;
    }
    server {
        listen [::]:443 ipv6only=off ssl;
        server_name subdomain.example.com;
        add_header Strict-Transport-Security
            "max-age=63072000; includeSubDomains; preload" always; # <-- again ???
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

includeSubDomains标题的部分显然告诉浏览器标题也适用于所有子域。

但是,如果该浏览器subdomain.example.com在看到 之前访问example.com …

ssl http nginx https http-headers

4
推荐指数
2
解决办法
3188
查看次数