Skip to content

Instantly share code, notes, and snippets.

Last active December 8, 2023 21:55
Show Gist options
  • Save thoop/8165802 to your computer and use it in GitHub Desktop.
Save thoop/8165802 to your computer and use it in GitHub Desktop.
Official nginx.conf for nginx
# Change YOUR_TOKEN to your prerender token
# Change (server_name) to your website url
# Change /path/to/your/root to the correct value
server {
listen 80;
root /path/to/your/root;
index index.html;
location / {
try_files $uri @prerender;
location @prerender {
proxy_set_header X-Prerender-Token YOUR_TOKEN;
set $prerender 0;
if ($http_user_agent ~* "googlebot|bingbot|yandex|baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest\/0\.|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp") {
set $prerender 1;
if ($args ~ "_escaped_fragment_") {
set $prerender 1;
if ($http_user_agent ~ "Prerender") {
set $prerender 0;
if ($uri ~* "\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff|svg|eot)") {
set $prerender 0;
#resolve using Google's DNS server to force DNS resolution and prevent caching of IPs
if ($prerender = 1) {
#setting prerender as a variable forces DNS resolution since nginx caches IPs and doesnt play well with load balancing
set $prerender "";
rewrite .* /$scheme://$host$request_uri? break;
proxy_pass http://$prerender;
if ($prerender = 0) {
rewrite .* /index.html break;
Copy link

varrocs commented Nov 18, 2021

Hi everyone!
there is an updated, official set of nginx configuration files here:

Copy link

zehawki commented Mar 17, 2022

Does anyone know what should be the UA string for Google Sites ( Perhaps they use something else other than 'googlebot' since I can't get link unfurling to work when using their "Embed from the web" widget.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment