diff --git a/volumes/conf.d/code.zinomedia.de.conf b/volumes/conf.d/code.zinomedia.de.conf index 37818de..6e091c4 100644 --- a/volumes/conf.d/code.zinomedia.de.conf +++ b/volumes/conf.d/code.zinomedia.de.conf @@ -18,29 +18,20 @@ server { add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self' data:;" always; - include "snippets/enable-vouch.conf"; + include "snippets/enable-vouch-no-subdomain.conf"; location / { resolver 127.0.0.11; set $upstream "http://code-server:8443"; - - #proxy_http_version 1.1; - #proxy_set_header Host $host; - proxy_pass_request_body on; - proxy_set_header Connection $http_connection; + proxy_http_version 1.1; proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header content-type "text/html"; - proxy_set_header Upgrade $http_upgrade; proxy_set_header Accept-Encoding gzip; - #proxy_set_header Connection upgrade; + proxy_set_header Connection upgrade; proxy_headers_hash_max_size 512; proxy_headers_hash_bucket_size 128; proxy_read_timeout 3600; - #proxy_set_header Host $http_host; proxy_pass $upstream; } diff --git a/volumes/snippets/enable-vouch-no-subdomain.conf b/volumes/snippets/enable-vouch-no-subdomain.conf new file mode 100644 index 0000000..1a16a5d --- /dev/null +++ b/volumes/snippets/enable-vouch-no-subdomain.conf @@ -0,0 +1,31 @@ + +# send all requests to the `/validate` endpoint for authorization +auth_request /validate; + +location = /validate { + # forward the /validate request to Vouch Proxy + proxy_pass http://vouch:9090/validate; + + # be sure to pass the original host header + proxy_set_header Host $http_host; + + # Vouch Proxy only acts on the request headers + proxy_pass_request_body off; + proxy_set_header Content-Length ""; + + # optionally add X-Vouch-User as returned by Vouch Proxy along with the request + auth_request_set $auth_resp_x_vouch_user $upstream_http_x_vouch_user; + + # these return values are used by the @error401 call + auth_request_set $auth_resp_jwt $upstream_http_x_vouch_jwt; + auth_request_set $auth_resp_err $upstream_http_x_vouch_err; + auth_request_set $auth_resp_failcount $upstream_http_x_vouch_failcount; +} + +# if validate returns `401 not authorized` then forward the request to the error401block +error_page 401 = @error401; + +location @error401 { + # redirect to Vouch Proxy for login + return 302 https://vouch.yourdomain.com:9090/login?url=$scheme://$http_host$request_uri&vouch-failcount=$auth_resp_failcount&X-Vouch-Token=$auth_resp_jwt&error=$auth_resp_err; +} \ No newline at end of file