Этот вопрос относится почти к противоположному этому вопросу. Поскольку nginx допускает только if
, а в предложении if
только return
, rewrite
и proxy_pass
и т. д., но try_files
, else
или NOT
нельзя использовать.
Итак, проблема: я хочу смоделировать следующее (в конфигурации псевдо nginx)
location / {
if (NOT isset(cookie("cookie-consent")) ) {
return 302 "https://example.com/cookieconsent";
}
else {
# I am running the site on a backend server
proxy_pass https://example.com:8443;
}
}
# The HTML here has a button to agree to the use of said cookies
location /cookieconsent {
root /path/to/www-root;
try_files $uri/index.html $uri.html;
}
location /setconsent {
add_header Set-Cookie 'consent=true;Domain=$host;Path=/;Max-Age=7776000;SameSite=strict;HTTPOnly;Secure';
return 302 https://$host;
}
Предыстория этого заключается в том, что я использую Nextcloud, и поскольку Nextcloud использует только функциональные файлы cookie, достаточно, чтобы пользователи были проинформированы об использовании файлов cookie через всплывающее окно, однако Nextcloud не имеет подключаемого модуля GDPR Cookie Consent, и я не заинтересован в его разработке. . Таким образом, самая простая альтернатива — проверить, был ли пользователь проинформирован об использовании файлов cookie, и сначала отобразить страницу согласия на использование файлов cookie, в противном случае до отображения фактического сайта.