Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLeitwolf112026-11-06 08:00:18 +0300
committerLeitwolf112026-11-06 08:00:18 +0300
commite13d8e3d85fed0d8b8421c624dac2e69e3398cab (patch)
tree2af653e61417a8620a6bc7f5e258262d7994ce4c
parent1439b240a8231c5206e3c8d4f245493a076f2841 (diff)
downloadwebsite-e13d8e3d85fed0d8b8421c624dac2e69e3398cab.tar.gz
Let Cloudflare Web Analytics run on the Tala sites
Cloudflare adds its Web Analytics beacon to each page it serves. The policies of tala.run, talac.tala.run, talafmt.tala.run and talalint.tala.run fell back to default-src 'self' for scripts, so the browser refused the beacon. They now allow scripts from static.cloudflareinsights.com and connections to cloudflareinsights.com; the beacon reports to /cdn-cgi/rum on the same host.
-rw-r--r--ops/nginx/tala.conf9
1 files changed, 5 insertions, 4 deletions
diff --git a/ops/nginx/tala.conf b/ops/nginx/tala.conf
index 2b75fdd..a8164ff 100644
--- a/ops/nginx/tala.conf
+++ b/ops/nginx/tala.conf
@@ -7,6 +7,7 @@
# name. xsharp-lang.xyz, the former domain, answers with a permanent redirect to
# the same path on tala.run. tazel.tala.run, where the build system was
# documented, answers with a permanent redirect to tazel.net, its own site.
+# The policies allow Cloudflare Web Analytics, which Cloudflare adds to each page.
server {
listen 80 default_server;
@@ -57,7 +58,7 @@ server {
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
- add_header Content-Security-Policy "default-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; object-src 'none'" always;
+ add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://static.cloudflareinsights.com; connect-src 'self' https://cloudflareinsights.com; img-src 'self' data:; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; object-src 'none'" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
@@ -134,7 +135,7 @@ server {
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
- add_header Content-Security-Policy "default-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; object-src 'none'" always;
+ add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://static.cloudflareinsights.com; connect-src 'self' https://cloudflareinsights.com; img-src 'self' data:; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; object-src 'none'" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
@@ -194,7 +195,7 @@ server {
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
- add_header Content-Security-Policy "default-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; object-src 'none'" always;
+ add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://static.cloudflareinsights.com; connect-src 'self' https://cloudflareinsights.com; img-src 'self' data:; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; object-src 'none'" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
@@ -254,7 +255,7 @@ server {
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
- add_header Content-Security-Policy "default-src 'self'; img-src 'self' data:; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; object-src 'none'" always;
+ add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://static.cloudflareinsights.com; connect-src 'self' https://cloudflareinsights.com; img-src 'self' data:; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; object-src 'none'" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;