У меня есть файл конфигурации nginx, который использует сервис prerender,
Я хочу проверить, существуют ли куки-файлы access_token, а затем служить локальным угловым,
и если cookie не существует (пользователь не вошел в систему), то запрос на передачу прокси в службу prerender,
и вот мой конфигурационный файл nginx,
proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=prerendercloud_cache:10m max_size=100m inactive=60m use_temp_path=off;
server {
set \$root /var/www/;
resolver 8.8.8.8;
set \$prerendercloud 'service.prerender.cloud';
listen 80;
server_name _;
location = / {
if (\$http_cookie ~* "access_token" ) {
root \$root;
try_files \$uri \$uri/ /index.html;
index index.html;
}
root \$root;
try_files \$uri @prerendercloud;
}
location / {
root \$root;
try_files \$uri \$uri/ /index.html;
index index.html;
}
location @prerendercloud {
proxy_set_header Accept-Encoding "gzip";
gunzip on;
root \$root;
proxy_set_header X-Prerender-Token 'my_token';
proxy_cache prerendercloud_cache;
proxy_cache_valid 200 5m;
proxy_intercept_errors on;
error_page 429 500 502 503 504 =200 /index.html;
proxy_cache_use_stale updating;
set \$prerender 0;
if (\$uri ~ "^(([^.]|\.html?)+)\$") {
set \$prerender "EXTENSION";
}
set \$prerender "\${prerender}-USER_AGENT";
if (\$http_x_prerendered ~ true) {
set \$prerender 0;
}
if (\$http_user_agent ~ "prerendercloud") {
set \$prerender 0;
}
proxy_cache_key "\$prerender\$host\$uri";
if (\$prerender = "EXTENSION-USER_AGENT") {
rewrite .* /\$scheme://\$host\$request_uri? break;
proxy_pass http://\$prerendercloud\$uri;
break;
}
rewrite .* /index.html break;
}
}
и вот ошибка, которую мне дает nginx:
nginx: [emerg] "try_files" directive is not allowed here in /etc/nginx/conf.d/default.conf:30
Я должен добавить, что знаки доллара экранированы, потому что этот файл находится внутри моей точки входа в докер.