Nginx If cookie exist different location
I found the solutionand here is my config file which works :
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 _; root $root; location = / { try_files $uri @prerendercloud; } location / { try_files $uri $uri/index.html $uri/ /index.html; index index.html; } location @prerendercloud { proxy_set_header Accept-Encoding "gzip"; gunzip on; 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; } if ($http_cookie ~* "access_token" ) { 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; }}
now I know that nginx rewrite is not just about redirecting request with 301 or 302, It also can server content related to other location.so the most important thing I found out is rewrite != redirect (301, 302)