Som nevnt her1 og her2; dette3 er ĂĄrsaken.
TL;DR — return
trer inn før basic auth. Se de overnevnte sidene for en forklaring.
Løsningsforslag:
server {
listen 80;
server_name sub.domain.tld;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name sub.domain.tld;
# ref. https://stackoverflow.com/a/67981564 - https://nginx.org/en/docs/dev/development_guide.html#http_phases
# `return` (`NGX_HTTP_SERVER_REWRITE_PHASE`) prosesseres før `auth_basic*` (`NGX_HTTP_ACCESS_PHASE`) av nginx,
# og man vil derfor ikke kunne bruke basic auth for ĂĄ autentisere et `return`-statement direkte i samme location block.
# `proxy_pass` kommer etter `auth_basic*` og vil derfor fungere som en litt hacky workaround.
location ~* {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/basic_auth;
proxy_pass http://127.0.0.1:1337;
}
}
server {
listen 1337;
location = /cfg {
set $CFG '';
set $CFG '${CFG}key1=value\n';
set $CFG '${CFG}key2=value\n';
return 200 $CFG;
}
}