configuration/configs/site.config.conf
configuration/configs/site.config.conf is a file in Bane's Lab Server. 338 lines of code and 0 definitions.
map $remote_addr $banes_lab_client {
"~^(?P<net>\d+\.\d+\.\d+)\.\d+$" $net.0;
"~^(?P<net>[0-9a-fA-F]*:[0-9a-fA-F]*:[0-9a-fA-F]*):" $net::;
default "-";
}
map $http_accept $banes_lab_accepts_json {
default 0;
~application/json 1;
}
map "$banes_lab_accepts_json$uri" $banes_lab_json_route {
default 0;
"~^1/[^.]*$" 1;
}
map "$accepts_markdown$request_uri" $banes_lab_markdown_404 {
default /404.html;
"~^1" @markdown404;
"~^0[^?]*\.md(\?|$)" @markdown404;
}
js_engine qjs;
js_path "/etc/nginx/js/";
js_import banes_lab_query from catalog.js;
js_set $banes_lab_markdown_canonical banes_lab_query.markdownCanonical;
log_format banes_lab_shortened '$banes_lab_client - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'rt=$request_time uct="$upstream_connect_time" '
'uht="$upstream_header_time" urt="$upstream_response_time" '
'rid=$request_id';
server {
server_name banes-lab.com;
access_log /var/log/nginx/banes_lab_access.log banes_lab_shortened;
error_log /var/log/nginx/banes_lab_error.log warn;
brotli on;
brotli_comp_level 5;
brotli_types text/plain text/css text/xml text/markdown application/javascript application/json application/xml application/xml+rss application/manifest+json image/svg+xml;
gzip_types text/plain text/css text/xml text/markdown text/javascript application/json application/javascript application/x-javascript application/xml application/xml+rss application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
gzip_proxied off;
root /var/www/banes-lab/web;
error_page 404 /404.html;
location /assets/ {
root /var/www/banes-lab/web;
try_files $uri =404;
brotli_static on;
gzip_static on;
access_log off;
add_header Cache-Control "no-cache" always;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
}
location /static/ {
root /var/www/banes-lab/web;
try_files $uri =404;
brotli_static on;
gzip_static on;
access_log off;
add_header Cache-Control "no-cache" always;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
}
location ~ "^/assets/[A-Za-z0-9_-]{8}\.[a-z0-9]+(\.br|\.gz)?$" {
root /var/www/banes-lab/web;
try_files $uri =404;
brotli_static on;
gzip_static on;
access_log off;
add_header Cache-Control "public, max-age=31536000, immutable" always;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
}
location = /json {
rewrite ^ /json/api last;
}
location = /json/ {
rewrite ^ /json/api last;
}
location ^~ /json/ {
root /var/www/banes-lab/web;
rewrite ^(/json/.+)/$ $1 last;
rewrite ^/json/(records|source)(/[^/]+)?$ /json/api/$1$2 last;
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS" always;
add_header Access-Control-Allow-Headers "Accept, If-None-Match, Range" always;
add_header Access-Control-Max-Age "86400" always;
return 204;
}
if ($args != "") {
rewrite ^ /q-static last;
}
try_files $uri $uri.json =404;
default_type application/json;
brotli_static on;
gzip_static on;
error_page 404 = @json404;
add_header Access-Control-Allow-Origin "*" always;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "cross-origin" always;
add_header Cache-Control "no-cache" always;
add_header Vary "Accept" always;
}
location @json404 {
js_content banes_lab_query.missing;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "cross-origin" always;
add_header Cache-Control "no-cache" always;
}
location = /q-static {
internal;
js_content banes_lab_query.staticQuery;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "cross-origin" always;
add_header Cache-Control "no-cache" always;
}
location = /q {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS" always;
add_header Access-Control-Allow-Headers "Accept" always;
add_header Access-Control-Max-Age "86400" always;
return 204;
}
js_content banes_lab_query.q;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "cross-origin" always;
add_header Cache-Control "no-cache" always;
}
location = /api/health {
default_type application/json;
return 200 '{"status":"ok"}';
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
add_header Cache-Control "no-store" always;
}
location ~ \.md$ {
root /var/www/banes-lab/web;
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET, HEAD, OPTIONS" always;
add_header Access-Control-Allow-Headers "Accept, If-None-Match, Range" always;
add_header Access-Control-Max-Age "86400" always;
return 204;
}
try_files $uri =404;
default_type text/markdown;
charset utf-8;
charset_types text/markdown;
brotli_static on;
gzip_static on;
error_page 404 $banes_lab_markdown_404;
add_header Access-Control-Allow-Origin "*" always;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "cross-origin" always;
add_header Cache-Control "no-cache" always;
add_header Vary "Accept" always;
add_header Link $banes_lab_markdown_canonical;
}
location @markdown404 {
default_type text/markdown;
charset utf-8;
charset_types text/markdown;
return 404 'Nothing is served at this address. Every address the site publishes is listed at https://banes-lab.com/api.md.\n';
add_header Access-Control-Allow-Origin "*" always;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "cross-origin" always;
add_header Cache-Control "no-cache" always;
add_header Vary "Accept" always;
}
location ~ \.txt$ {
root /var/www/banes-lab/web;
try_files $uri =404;
default_type text/plain;
charset utf-8;
brotli_static on;
gzip_static on;
error_page 404 @text404;
add_header Access-Control-Allow-Origin "*" always;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "cross-origin" always;
add_header Cache-Control "no-cache" always;
}
location @text404 {
default_type text/plain;
charset utf-8;
return 404 'Nothing is served at this address. Every address the site publishes is listed at https://banes-lab.com/api.md.\n';
add_header Access-Control-Allow-Origin "*" always;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "cross-origin" always;
add_header Cache-Control "no-cache" always;
}
location ~ \.json$ {
root /var/www/banes-lab/web;
try_files $uri =404;
default_type application/json;
brotli_static on;
gzip_static on;
error_page 404 = @json404;
add_header Access-Control-Allow-Origin "*" always;
add_header tdm-reservation "0" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "cross-origin" always;
add_header Cache-Control "no-cache" always;
}
location / {
limit_conn conn_limit 50;
root /var/www/banes-lab/web;
rewrite ^/(.+)/$ /$1 permanent;
if ($arg_tab != "") {
return 301 $uri$legacy_tab$legacy_section;
}
if ($markdown_route) {
rewrite ^/$ /index.md last;
rewrite ^(.+)$ $1.md last;
}
if ($banes_lab_json_route) {
rewrite ^/$ /json/home last;
rewrite ^(.+)$ /json$1 last;
}
try_files $uri $uri.html $uri/index.html @markdown;
brotli_static on;
gzip_static on;
brotli off;
gzip off;
sub_filter "52f39ac235b0d7d70110a13ecd18d49a" $request_id;
sub_filter_once off;
add_header tdm-reservation "0" always;
add_header Content-Security-Policy "default-src 'none'; script-src 'nonce-$request_id' 'strict-dynamic' 'self'; style-src 'nonce-$request_id' 'self'; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; object-src 'none';" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header Referrer-Policy "same-origin" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header X-XSS-Protection "0" always;
add_header X-Download-Options "noopen" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-DNS-Prefetch-Control "off" always;
add_header Permissions-Policy "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=(), interest-cohort=()" always;
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "credentialless" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
add_header Cache-Control "no-cache" always;
add_header Vary "Accept" always;
}
location @markdown {
rewrite ^(.+)$ $1.md last;
}
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
http2 on;
ssl_certificate /etc/letsencrypt/live/banes-lab.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/banes-lab.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/banes-lab.com/chain.pem;
}
server {
listen [::]:443 ssl;
listen 443 ssl;
http2 on;
server_name www.banes-lab.com;
access_log /var/log/nginx/banes_lab_access.log banes_lab_shortened;
ssl_certificate /etc/letsencrypt/live/banes-lab.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/banes-lab.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/banes-lab.com/chain.pem;
return 301 https://banes-lab.com$request_uri;
}
server {
listen [::]:443 ssl;
listen 443 ssl;
http2 on;
server_name mta-sts.banes-lab.com;
access_log /var/log/nginx/banes_lab_access.log banes_lab_shortened;
ssl_certificate /etc/letsencrypt/live/banes-lab.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/banes-lab.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/banes-lab.com/chain.pem;
root /var/www/banes-lab/web;
error_page 404 /404.html;
location = /.well-known/mta-sts.txt {
default_type text/plain;
return 200 "version: STSv1\nmode: enforce\nmx: fwd1.porkbun.com\nmx: fwd2.porkbun.com\nmax_age: 86400\n";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cache-Control "no-cache" always;
}
location = /404.html {
internal;
}
location /assets/ {
try_files $uri =404;
brotli_static on;
gzip_static on;
access_log off;
add_header Cache-Control "public, max-age=31536000, immutable" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
}
location /static/ {
try_files $uri =404;
brotli_static on;
gzip_static on;
access_log off;
add_header Cache-Control "no-cache" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
}
location / {
return 404;
}
}
server {
listen 80;
listen [::]:80;
server_name banes-lab.com www.banes-lab.com mta-sts.banes-lab.com;
access_log /var/log/nginx/banes_lab_access.log banes_lab_shortened;
return 301 https://banes-lab.com$request_uri;
}