如何使用Nginx、Apache、WordPress、HAProxy等阻止FLoC?
FLoC或Cohorts联合学习是Google最近推出的一项功能,用于用自己的用户监视内置浏览器替换第三方cookie。
这本质上是一个内置的Chrome浏览器,关注隐私的人可以切换到另一个privacy concerned browser以避免被跟踪。但是网站所有者也可以通过对Web服务器HTTP响应头进行一些简单的修改来选择退出FLoC。
我建议查看这个Google和GitHub页面以了解更多关于FLoC的信息。
在本文中,我们将介绍作为网站所有者可以使用的一些方法,通过简单的配置更改来选择退出FLoC。
自定义HTTP头
自定义的HTTP响应头确保网站所有者选择退出FLoC。响应头如下:
Permissions-Policy: interest-cohort=()
让我们来看看实施情况。
NGINX
对于NGINX,您需要在每个服务器块中添加add_header
指令(如果单个配置文件用于多个网站),或者添加到每个相应的服务器配置文件中。
server {
location / {
add_header Permissions-Policy interest-cohort=();
...
}
}
然后重新启动NGINX服务:
systemctl restart nginx
或者,您可以通过在http
块中添加以下内容来采用另一种方法。
add_header Permissions-Policy "interest-cohort=()";
它在HTTP响应头中将如下所示。
HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Fri, 30 Apr 2021 06:37:02 GMT
Content-Type: text/html
Content-Length: 4057
Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT
Connection: keep-alive
ETag: "5d9bab28-fd9"
Permissions-Policy: interest-cohort=()
Accept-Ranges: bytes
Apache
对于Apache Web服务器,在您的配置文件中添加自定义标头:
Header always set Permissions-Policy: interest-cohort=()
然后重新启动Apache以使其生效:
systemctl restart httpd
它将生成以下输出。
HTTP/1.1 200 OK
Date: Fri, 30 Apr 2021 06:49:58 GMT
Server: Apache/2.4.37 (centos)
Permissions-Policy: interest-cohort=()
Last-Modified: Thu, 29 Apr 2021 06:40:41 GMT
ETag: "3-5c116c620a6f1"
Accept-Ranges: bytes
Content-Length: 3
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
WordPress
如果您的WordPress是shared hosting,您将无法编辑Web服务器配置文件。但好消息是,您可以通过挂载在其代码库中设置标头。在活动主题的function.php
中,在末尾添加以下行:
add_filter(
'wp_headers',
function ( $headers ) {
if ( empty( $headers['Permissions-Policy'] ) ) {
$headers['Permissions-Policy'] = 'interest-cohort=()';
} elseif (
! empty( $headers['Permissions-Policy'] )
&& false === strpos( $headers['Permissions-Policy'], 'interest-cohort' )
) {
$headers['Permissions-Policy'] .= ', interest-cohort=()';
}
return $headers;
}
);
保存文件并在WordPress管理后台清除缓存以使新标头生效。
以下是我的实施输出的样子。
cache-control: no-cache, must-revalidate, max-age=0
content-encoding: br
content-type: text/html; charset=UTF-8
date: Fri, 30 Apr 2021 13:40:14 GMT
expires: Wed, 11 Jan 1984 05:00:00 GMT
host-header: 6b7412fb82ca5edfd0917e3957f05d89
link: ; rel="https://api.w.org/"
permissions-policy: interest-cohort=()
server: nginx
set-cookie: wpSGCacheBypass=1; expires=Fri, 30-Apr-2021 15:20:14 GMT; Max-Age=6000; path=/; HttpOnly; SameSite=Lax
vary: Accept-Encoding
x-cache-enabled: True
x-httpd: 1
x-proxy-cache: BYPASS
x-proxy-cache-info: 0 NC:100000 UP:SKIP_CACHE_SET_COOKIE
Another easy solution would be to use the HTTP Headers plugin.
HAProxy
HAProxy允许在其配置中添加header指令。在配置的frontend
、listen
或backend
部分(适用的部分)中,添加以下指令:
http-response set-header Permissions-Policy interest-cohort=()
确保重新启动您的HAProxy服务器:
systemctl restart haproxy
这将使头部在所有新请求中生效。
Traefik
Traefik通常用作环境的入口控制器,在上述服务器中可以配置为退出FLoC。在您的traefik.toml
文件中,添加以下行:
[http.middlewares]
[http.middlewares.floc.headers]
[http.middlewares.floc.headers.customResponseHeaders]
Permissions-Policy = "interest-cohort=()"
或者对于基于YAML的配置(traefik.yml
),使用以下配置:
http:
middlewares:
floc:
headers:
customResponseHeaders:
Permissions-Policy: "interest-cohort=()"
或者如果使用Docker运行Traefik,则在docker-compose.yml
中修改traefik标签如下:
labels:
- "traefik.http.middlewares.floc.headers.customresponseheaders.Permissions-Policy=interest-cohort=()"
总结
FLoC是一种新的监控机制,如果您不想在网站上显示基于兴趣的广告,可以通过实施权限策略头部来选择退出,如上所述。作为用户,您可以访问此专用页面(Am I FloCed?)来查看您是否正在使用FLoC追踪。