Skip to content

Instantly share code, notes, and snippets.

@peterhel
Last active August 29, 2015 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save peterhel/1e6972552644517fca23 to your computer and use it in GitHub Desktop.
Save peterhel/1e6972552644517fca23 to your computer and use it in GitHub Desktop.
Nginx prerender
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)
';
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment