Skip to content

Instantly share code, notes, and snippets.

@kaioken
Created November 11, 2020 15:27

Revisions

  1. kaioken revised this gist Nov 11, 2020. 1 changed file with 1 addition and 3 deletions.
    4 changes: 1 addition & 3 deletions prerender-nginx.conf
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,3 @@
    ```
    location @prerender {
    proxy_set_header X-Prerender-Token {token};

    @@ -29,5 +28,4 @@ location @prerender {
    if ($prerender = 0) {
    rewrite .* /index.html break;
    }
    }
    ```
    }
  2. kaioken revised this gist Nov 11, 2020. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion prerender-nginx.conf
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,4 @@
    ```
    location @prerender {
    proxy_set_header X-Prerender-Token {token};

    @@ -28,4 +29,5 @@ location @prerender {
    if ($prerender = 0) {
    rewrite .* /index.html break;
    }
    }
    }
    ```
  3. kaioken created this gist Nov 11, 2020.
    31 changes: 31 additions & 0 deletions prerender-nginx.conf
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    location @prerender {
    proxy_set_header X-Prerender-Token {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
    resolver 8.8.8.8;

    if ($prerender = 1) {

    #setting prerender as a variable forces DNS resolution since nginx caches IPs and doesnt play well with load balancing
    set $prerender "service.prerender.io";
    rewrite .* /$scheme://$host$request_uri? break;
    proxy_pass http://$prerender;
    }
    if ($prerender = 0) {
    rewrite .* /index.html break;
    }
    }