将 HSTS header 添加到我的域,但如果请求是 API::P 请求则不添加 header
Add HSTS header to my domain but NOT add the header if the request is an API::P request
我在 location 使用了否定正则表达式,但它确实添加了 header 但删除了之前存在的所有其他内容。即使我添加它也不会只考虑其余的 hsts。我不确定执行此操作的最佳方法是什么。为其他任何东西添加 header,但“如果我们在 API::P 上,请不要添加此 HSTS header”。
location ~ (?!^/p/) {
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
或
location ~ ^(/p/) {
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
这是我想到的逻辑。
if location == "/p/":
pass
else:
add_header ...HSTS...
出于性能考虑,请尽可能避免使用正则表达式。要么使用两个位置复制所有其他不能移动到上一层的位置:
location / {
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
... common configuration
}
location /p/ {
... common configuration
}
或使用 map
块(但这实际上至少会进行一次 PRCE 库调用):
map $uri $hsts {
~^/p/ "";
default "max-age=31536000; includeSubDomains";
}
server {
...
add_header Strict-Transport-Security $hsts always;
...
}
如果 add_header
指令中使用的评估变量为空,nginx 将不会添加具有空值的 header - 相反它不会添加这样的 header完全没有。
对于 two-locations 配置,每个以 /p/
开头的请求都将用 location /p/ { ... }
处理,每个其他请求都将用 location / { ... }
处理。对于这种特殊情况,绝对不需要使用任何正则表达式位置。
请注意,当且仅当当前级别上没有定义 add_header
指令时,add_header
指令才从以前的配置级别继承。
我在 location 使用了否定正则表达式,但它确实添加了 header 但删除了之前存在的所有其他内容。即使我添加它也不会只考虑其余的 hsts。我不确定执行此操作的最佳方法是什么。为其他任何东西添加 header,但“如果我们在 API::P 上,请不要添加此 HSTS header”。
location ~ (?!^/p/) {
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
或
location ~ ^(/p/) {
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
这是我想到的逻辑。
if location == "/p/":
pass
else:
add_header ...HSTS...
出于性能考虑,请尽可能避免使用正则表达式。要么使用两个位置复制所有其他不能移动到上一层的位置:
location / {
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
... common configuration
}
location /p/ {
... common configuration
}
或使用 map
块(但这实际上至少会进行一次 PRCE 库调用):
map $uri $hsts {
~^/p/ "";
default "max-age=31536000; includeSubDomains";
}
server {
...
add_header Strict-Transport-Security $hsts always;
...
}
如果 add_header
指令中使用的评估变量为空,nginx 将不会添加具有空值的 header - 相反它不会添加这样的 header完全没有。
对于 two-locations 配置,每个以 /p/
开头的请求都将用 location /p/ { ... }
处理,每个其他请求都将用 location / { ... }
处理。对于这种特殊情况,绝对不需要使用任何正则表达式位置。
请注意,当且仅当当前级别上没有定义 add_header
指令时,add_header
指令才从以前的配置级别继承。