如何使用Nginx、Apache、WordPress、HAProxy等阻止FLoC?

FLoC或Cohorts联合学习是Google最近推出的一项功能,用于用自己的用户监视内置浏览器替换第三方cookie。

这本质上是一个内置的Chrome浏览器,关注隐私的人可以切换到另一个privacy concerned browser以避免被跟踪。但是网站所有者也可以通过对Web服务器HTTP响应头进行一些简单的修改来选择退出FLoC。

我建议查看这个GoogleGitHub页面以了解更多关于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指令。在配置的frontendlistenbackend部分(适用的部分)中,添加以下指令:

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追踪。

类似文章