openvibers/openvibe.search Commits
Vhost: proxy POST /release-metrics (open tabs' release reports were a 404 on search.openvibe.network) (#73)
Changes
@@@ -72,6 +72,9 @@ server {location = /api/health { proxy_pass http://127.0.0.1:4710; }location = /api/ready { proxy_pass http://127.0.0.1:4710; }location = /release.json { proxy_pass http://127.0.0.1:4710; }++ # Open tabs report "a newer release took over" here (openvibe-shared release-watch, POST text/plain): it was not++ # proxied, so every report from search.openvibe.network was a 404 (2026-10-17).++ location = /release-metrics { limit_except POST { deny all; } client_max_body_size 4k; proxy_pass http://127.0.0.1:4710; }# Metrics are for host-local scrapers only (http://127.0.0.1:4710/metrics).location ~* ^/metrics(/|$) { return 404; }@@@ -28,6 +28,7 @@ t('wildcard certificate and client address from $remote_addr only', () => {t('/metrics is 404; owner API, webhook and document writes are loopback-only', () => {assert.match(conf, /location ~\* \^\/metrics\(\/\|\$\) \{ return 404; \}/, '/metrics in any letter case');assert.match(block('location = /updates'), /limit_except GET \{ deny all; \}/, 'the update log, GET only');++ assert.match(conf, /location = \/release-metrics \{ limit_except POST \{ deny all; \} client_max_body_size 4k; proxy_pass http:\/\/127\.0\.0\.1:4710; \}/, 'open tabs\' release reports reach the app (POST only, small)');assert.match(conf, /location \^~ \/shared\/ \{ limit_except GET \{ deny all; \} proxy_pass http:\/\/127\.0\.0\.1:4710; \}/, 'the site\'s own Frame files');assert.match(block('location ^~ /internal/'), loopbackOnly);assert.match(block('location ^~ /api/v1/owners/'), loopbackOnly);
@@ -72,6 +72,9 @@ server {
@@ -72,6 +72,9 @@ server {
location = /api/health { proxy_pass http://127.0.0.1:4710; }
location = /api/health { proxy_pass http://127.0.0.1:4710; }
location = /api/ready { proxy_pass http://127.0.0.1:4710; }
location = /api/ready { proxy_pass http://127.0.0.1:4710; }
location = /release.json { proxy_pass http://127.0.0.1:4710; }
location = /release.json { proxy_pass http://127.0.0.1:4710; }
+ # Open tabs report "a newer release took over" here (openvibe-shared release-watch, POST text/plain): it was not
+ # proxied, so every report from search.openvibe.network was a 404 (2026-10-17).
+ location = /release-metrics { limit_except POST { deny all; } client_max_body_size 4k; proxy_pass http://127.0.0.1:4710; }
# Metrics are for host-local scrapers only (http://127.0.0.1:4710/metrics).
# Metrics are for host-local scrapers only (http://127.0.0.1:4710/metrics).
location ~* ^/metrics(/|$) { return 404; }
location ~* ^/metrics(/|$) { return 404; }
@@ -28,6 +28,7 @@ t('wildcard certificate and client address from $remote_addr only', () => {
@@ -28,6 +28,7 @@ t('wildcard certificate and client address from $remote_addr only', () => {
t('/metrics is 404; owner API, webhook and document writes are loopback-only', () => {
t('/metrics is 404; owner API, webhook and document writes are loopback-only', () => {
assert.match(conf, /location ~\* \^\/metrics\(\/\|\$\) \{ return 404; \}/, '/metrics in any letter case');
assert.match(conf, /location ~\* \^\/metrics\(\/\|\$\) \{ return 404; \}/, '/metrics in any letter case');
assert.match(block('location = /updates'), /limit_except GET \{ deny all; \}/, 'the update log, GET only');
assert.match(block('location = /updates'), /limit_except GET \{ deny all; \}/, 'the update log, GET only');
+ assert.match(conf, /location = \/release-metrics \{ limit_except POST \{ deny all; \} client_max_body_size 4k; proxy_pass http:\/\/127\.0\.0\.1:4710; \}/, 'open tabs\' release reports reach the app (POST only, small)');
assert.match(conf, /location \^~ \/shared\/ \{ limit_except GET \{ deny all; \} proxy_pass http:\/\/127\.0\.0\.1:4710; \}/, 'the site\'s own Frame files');
assert.match(conf, /location \^~ \/shared\/ \{ limit_except GET \{ deny all; \} proxy_pass http:\/\/127\.0\.0\.1:4710; \}/, 'the site\'s own Frame files');
assert.match(block('location ^~ /internal/'), loopbackOnly);
assert.match(block('location ^~ /internal/'), loopbackOnly);
assert.match(block('location ^~ /api/v1/owners/'), loopbackOnly);
assert.match(block('location ^~ /api/v1/owners/'), loopbackOnly);