我有一个 nginx 配置,它由多个位置组成。我想add_header为每个位置添加一个指令,并且我正在检查如何在全球范围内完成此操作。无需修改任何位置,但每个位置都会继承此标头。我对此进行了研究,发现我可以使用包含并add_header在另一个文件中从外部声明。通过实现这种方法,我仍然必须在每个位置写入
我尝试使用 Apache 服务器 2.4.6 和 headers_module 设置带有环境变量**的自定义 HTTP 标头。
我在端口 80 上的 HTTP VHost 中工作。
一切都按预期进行,基本示例如下:
Header set MyHeader "%D %t"
我已阅读 mod_headers 的 Apache 文档:https://httpd.apache.org/docs/2.4/en/mod/mod_headers.html#header
据说可以使用以下方式访问环境变量
%{ENVVARNAME}e
(ENVVARNAME 是 ENV 变量的名称)
我还阅读了其他帖子,但没有真正有效的答案: Apache set custom header with an environment variable
但我的问题是添加一个标头而不是像 HOSTNAME 环境值那样标识我的 Apache 服务器
Header Set X-Serv %{HOSTNAME}e
不成功:始终显示 X-Serv:{null} 而不是值
SetEnv myvar ${HOSTNAME}
Header set X-Serv %{myvar}e
没有成功:它显示在我的 HTTP 标头中:X-Serv: %{myvar}e
我还尝试了其他一些不同的组合:
请注意:我的 HOSTNAME 环境变量存在,并且它显示在“env”命令中,其中 apache 用户拥有 httpd 进程
任何想法?
我有一个多媒体网站,它让用户可以上传自己的媒体(视频、音乐)或嵌入来自 YouTube、Vimeo 等网站的媒体。
最近,正在宣布新的标题。我试图添加这个标题,但我相信我在某个地方犯了一个错误。
这就是我尝试添加此标题的方式;
Header always set Feature-Policy "vibrate 'self'; usermedia '*'; microphone 'none'; payment 'none'; sync-xhr 'self' mysiteURL.com"
Run Code Online (Sandbox Code Playgroud)
在下面得到这些错误;
Error with Feature-Policy header: Unrecognized feature: 'vibrate'.
(index):1 Error with Feature-Policy header: Unrecognized feature: 'usermedia'.
(index):1 Error with Feature-Policy header: Unrecognized origin: 'mysiteURL.com'.
(index):1 Error with Feature-Policy header: Unrecognized feature: 'vibrate'.
(index):1 Error with Feature-Policy header: Unrecognized feature: 'usermedia'.
(index):1 Error with Feature-Policy header: Unrecognized origin: 'mysiteURL.com'.
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
我尝试使用 IIS 7 强制编码。
当我在 http 响应头中添加密钥时:
内容类型和值 charset=utf-8 我得到了这个关键的内容类型:text/html,content-type=utf-8
有没有办法去掉逗号?
感谢贾斯汀的回答。
但它看到不起作用。有我的配置,我需要为 asp 经典做那个。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<remove fileExtension=".html" />
<remove fileExtension=".hxt" />
<remove fileExtension=".htm" />
<remove fileExtension=".asp" />
<mimeMap fileExtension=".htm" mimeType="text/html" />
<mimeMap fileExtension=".hxt" mimeType="text/html" />
<mimeMap fileExtension=".html" mimeType="text/html" />
<mimeMap fileExtension=".asp" mimeType="text/html; charset=UTF-8" />
</staticContent>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud) 我正在配置 Nginx 服务器,以便作为反向代理为 Django 应用程序(在 Gunicorn 上运行)提供服务。
我的问题是我希望我的网站使用 HTTPS 进行保护,因此我希望我的 Django 应用程序能够确定连接是否安全。我使用的是 Django 1.4,所以我可以访问SECURE_PROXY_SSL_HEADER我配置为SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https').
现在,正如文档中提到的,我需要确保 Nginx 仅在需要时添加标头,而在不需要时将其剥离。因为我希望我的 Nginx 配置尽可能 DRY,所以我不想有两个配置文件(一个用于端口 80,一个用于端口 443)。
因此,我想知道 Nginx 中是否有一种方法可以确定连接是否为 https,并相应地添加(或剥离)标头。
我在尝试让 Nginx 忽略并隐藏代理服务器的一些标头时遇到了麻烦。
我希望 Nginx 隐藏并忽略“Cache-Control”和“Server”标头,但它不起作用,我不知道为什么。
我的配置如下:
location / {
proxy_pass http://111.131.50.42;
proxy_hide_header Cache-Control;
expires 60M;
add_header Cache-Control "public";
proxy_ignore_headers Cache-Control;
proxy_hide_header Cache-Control;
access_log off;
}
Run Code Online (Sandbox Code Playgroud)
但即便如此,我仍然收到原始“Cache-Control”和“Server”标头。
你知道我做错了什么吗?
PS 我不能使用 ngx_headers_more 模块。我无法将此模块添加到我们的 Nginx 安装中。
我似乎找不到足够的文档。我有一个生成一些动态响应的应用程序,但仍然可以从Last-Modified标题中受益——所以我发送了它。
但是,打开if_modified_since(设置为before,根据http://nginx.org/en/docs/http/ngx_http_core_module.html#if_modified_since)似乎对非静态资源没有任何影响。例如,php、python 应用程序。
这是因为 Nginx 不只是查看我的响应Last-Modified标头吗?因为我可以看到它们似乎设置正确,如下所示:
> GET /3.0/view.json?id=2 HTTP/1.1
> Host: xxxxxxxxxxxxx
> Accept: */*
> If-Modified-Since: Sat, 02 May 2015 19:43:02 GMT
>
< HTTP/1.1 200 OK
* Server nginx/1.4.7 is not blacklisted
< Server: nginx/1.4.7
< Date: Fri, 01 May 2015 19:56:05 GMT
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Encoding
< Last-Modified: Fri, 01 May 2015 19:56:05 GMT
Run Code Online (Sandbox Code Playgroud)
或者我忽略了更大的东西?只是好奇是如何 …
默认情况下,ADFS 3 响应包含“X-Frame-Options: DENY”HTTP 标头。这可以防止 ADFS 在 iframe 中运行,因为这为点击劫持攻击提供了机会。
然而,目前我的公司正在实施一个集成,其中应该对此安全规则进行例外处理:某个域上的页面应该能够在 iframe 中嵌入 ADFS。
然而,似乎 ADFS 不允许开箱即用地更改此设置。那么修改这个 HTTP 头的最好方法是什么?
例如 RFC ( https://tools.ietf.org/html/rfc7034#section-2.3.2.3 )中的建议?
想要在框架中呈现所请求内容的页面将其自己的来源信息提供给通过查询字符串参数提供要框架化的内容的服务器。
服务器验证主机名是否符合其标准,以便允许目标资源对页面进行框架化。例如,这可能通过查找允许构建页面的受信任域名白名单来实现。例如,对于 Facebook 的“Like”按钮,服务器可以检查提供的主机名是否与该“Like”按钮预期的主机名匹配。
如果在步骤 #2 中满足正确的条件,服务器会在“X-Frame-Options: ALLOW-FROM”中返回主机名。
- 浏览器强制执行“X-Frame-Options: ALLOW-FROM”标头。
我最近遇到了某种安全设备 (BlueCoat),它要求所有到 Internet 的连接都必须通过它进行代理(你好,中间人),因此使用特殊的 SSL 证书来拦截所有流量。
这阻止了 Git 的正常操作,即使设置了适当的http.proxy和http.sslCAInfo属性以确保 SSL 连接本身有效。
使用环境变量GIT_CURL_VERBOSE=1,我们发现在使用时git clone,会出现HTTP 407(需要代理认证)。Git 正确完成此身份验证,最后,设备返回带有 cookie 标头的 HTTP 200 Set-Cookie。
Git 然后将连接到目标服务器,但没有cookie,导致 HTTP 401。
解决这个问题的方法是设置git配置选项 http.saveCookies=true
问题: 中间代理添加cookies真的是RFC标准允许的吗?
Anthony Rich向 http-state 邮件列表提出了同样的问题,但没有任何回应。他确实注意到在
RFC 2965 HTTP 状态管理机制,3.5 缓存代理角色它说:代理不得在代理响应(请求)中引入自己的 Set-Cookie2 (Cookie) 标头。
但是,取代的 RFC 6265根本不再提及这一点。
我正在使用 Varnish,我不太确定是否还应该删除Server: nginxHTTP 标头。为什么有人需要知道我正在使用 NGINX?可以从响应中删除这个 HTTP 标头还是在某个地方需要它?从安全的角度来看,这样做可能更好?
http-headers ×10
nginx ×5
apache-2.4 ×2
cache ×2
http ×2
proxy ×2
adfs ×1
cookie ×1
encoding ×1
iis ×1
iis-7 ×1
security ×1
ssl ×1
varnish ×1
web-server ×1