http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; map $http_user_agent $prerender_ua { default "0"; "~baiduspider" "1"; "~twitterbot" "1"; "~facebookexternalhit" "1"; "~rogerbot" "1"; "~linkedinbot" "1"; "~embedly" "1"; "~quora link preview" "1"; "~showyoubot" "1"; "~outbrain" "1"; "~pinterest" "1"; "~slackbot" "1"; } map $uri $prerender { default "$prerender_ua"; "~_escaped_fragment_" "1"; } map $prerender $route { "0" "@default"; "1" "@prerender"; } server { listen 9999; server_name localhost; set $mainuri "http://www.mywebpage.com"; location @default { resolver 8.8.8.8; proxy_pass $mainuri; add_header X-Route default; } location @prerender { add_header X-Route prerender; rewrite ^(.*)$ /$mainuri$1?$args break; # Proxy uri to running prerender.io instance proxy_pass http://127.0.0.1:3000; } location / { content_by_lua ' ngx.exec(ngx.var.route) '; } } }