Мне нужно настроить сервер nginx так, чтобы: Если у пользователя есть конкретный файл cookie, поэтому сервер должен отправить файл, иначе сервер должен отправить другой. Я прочитал много статей по теме, но ничего не помогло, также я знаю, что есть некоторые проблемы, когда try_files
встречает location if
но как это решить ...
У меня есть пример, который должен работать, но не на самом деле:
upstream site {
server localhost:4321;
}
server {
listen *:1234;
server_name site.com;
root /path/www/;
ssl on;
ssl_certificate /path/ssl.crt;
ssl_certificate_key /path/ssl.key;
location = / {
set $variable /path/index.html;
if ($http_cookie ~* "someCookie=someValue(?:;|$)") {
set $index_file /path2/index.html;
}
rewrite .* $index_file break;
try_files $uri/index.html $uri.html $uri @site;
}
}
Я сделал это так, не уверен, что это лучшее решение, но оно работает.
location @rewrite {
if ($http_cookie ~* "someCookie=someValue(?:;|$)") {
rewrite .* /path1/file1.html last;
}
rewrite .* /path2/file2.html last;
}
location = / {
try_files $uri/index.html $uri.html $uri @rewrite;
}
Попробуйте что-то вроде этого:
if ($cookie_myCookieNameIsBlaBlaBla ~* "cookieValueThatIWannaMatch") {
# my logic in here
}
Просто помните, что, согласно документации nginx, если это зло, будьте осторожны.
Больше информации:
Ця!