Чтобы не рассуждать абстрактно, возьмём конкретную задачу. Допустим, для безопасности, мы хотим скрыть wp-login.php вордпресса для всех, у кого нет специальных кук. А чтобы два раза не вставать добавим ещё секретный url, который эту куку устанавливает. Особенно это актуально для телефонов, где этого нельзя сделать даже вручную без танцев с бубнами.
Выглядит это так:
location ~ ^/wp-login\.php {
if ($cookie_admin-access-token != "secretkey") {
return 404;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php;
try_files $uri =404;
}
location = /set-admin-access-token-secretkey/ {
add_header Set-Cookie "admin-access-token=secretkey; Max-Age=31536000; Domain=example.com; Path=/";
add_header Content-Type text/html;
return 200 "<!DOCTYPE html><html><body>Welcome to admin</body></html>";
}
Для проверки кук в nginx используется переменная $cookie_<имя кук>
. В примере я назвал куки admin-access-token
, которому присваивается значение secretkey
. Про остальные параметры кук можно почитать здесь.
Теперь страница https://parastrok.ru/wp-login.php не доступна никому, у кого нет специальных кук. Собственно, проверку кук можно добавить в любой location
и даже на уровне server
, только проверьте, что вы не скрыли то, что скрывать не нужно.
И да, все названия и значения в примере вымышлены, любые совпадения случайны.