#http #nginx #server #routes
Вопрос:
У меня есть конфигурация NGINX, подобная этой
server {
listen 80;
server_name localhost;
#any request without the http cookie has to be redirected to login
location / {
if ($http_cookie ~* "user_tokens") {
return 302 http://127.0.0.0:5000/;
#break;
}
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
Идея состоит в том, чтобы настроить правило маршрутов следующим образом
- Любой запрос без файла cookie будет перенаправлен на сервер входа в систему(5000).
- В противном случае он должен обслуживать страницы в корне.
Но это работает не так, как ожидалось, он всегда обслуживает страницы из корня.
Комментарии:
1.Используйте
!~*
для условий, в которых$http_cookie
не содержитсяuser_tokens
.
Ответ №1:
Было ошибкой предполагать, что ~*
это отрицательное состояние, так оно и есть на самом деле !~*
.
if ($http_cookie !~* "user_tokens")