ReadyMage Help
  • ReadyMage
  • USER PORTAL
    • User Portal Access
    • Change Password
    • Two-Factor Authentication
  • Project Management
    • Project List
    • Project Settings
      • General Info
      • Git Management
      • Environments
      • Members and roles
      • Security
        • Deletion Protection
        • TFA Enforcement
      • Delete Project
  • Application Management
    • Magento Details
    • Domain Management
    • Logs & Monitoring
    • Backups
      • Backup process
      • Disaster recovery process
    • Deployments
      • Deploy without build cache
      • Queue Tab (Launching soon)
      • Settings Tab (Launching soon)
        • Automatic Deployments
        • ReadyMage Maintenance Page
          • Website Access During Maintenance
      • Notifications Tab (Launching soon)
        • Managing email notifications
        • Managing Slack notifications
      • Pipeline Deployments
      • Pipeline Configuration file
        • Migration guide from 0.x.x to 1.0.0
    • SSH Access
      • SSH Usage
      • Database Access using Graphical Interface
      • Troubleshooting
    • IP Whitelist
    • Password Authentication
    • Database & Media
    • Search Engine Bots Discovery
  • Service Management
    • Server-Side Rendering
    • SFTP
    • NewRelic
    • Packagist Modules
    • Cloudflare
  • Infrastructure Management
    • Autoscale
    • Sleep Mode
    • Manage Services
    • Historical Resource Usage
  • PROJECT DEVELOPMENT
    • Node.js version
    • Store access
    • Creating a Production Environment
    • Additional Environments
    • ScandiPWA, PWA Studio, Hyva, or Luma
    • Project Migration to ReadyMage
    • SSH Access for Magento CLI, database and media
    • Code customization and local setup
    • Extension installation
    • Add translations (switch locale)
    • Existing ScandiPWA Project Code Migration
    • Database and media migration
    • Redirect setup
    • Connect CDN and WebP optimization
    • Email setup
    • Changing the Domain & Multi-Store Set up
    • Internal service addresses
    • Kibana filters and useful CLI commands
    • Persistent directories
  • FAQ
    • General
    • Autoscaling
    • Billing
    • User Portal Options
    • Services connected to ReadyMage
    • Hosting, managing resources and autoscaling
    • Source Code Management
    • ScandiPWA and Magento Versions, Commerce Edition and Upgrades
    • Supported software versions
Powered by GitBook
On this page
  • Connecting to the ReadyMage account
  • Disconnecting your Rendy.JS account
  • Rendy.JS Implementation

Was this helpful?

  1. Service Management

Server-Side Rendering

Server-side rendering allows the content of your PWA store to be available for the search engine and social network bots.

PreviousSearch Engine Bots DiscoveryNextSFTP

Last updated 1 month ago

Was this helpful?

SSR (Server-Side Rendering) provides the content of your PWA store to the search engine and social network bots for the best indexing and display.

ReadyMage instances come with a Rendy.JS module pre-installed. You can connect through the User Portal.

If connected, you will be billed based on your usage automatically through your regular monthly invoice. The billing is based on a rate of 1.65$ per 1000 rendered pages with 7-day cache freshness.

Connecting to the ReadyMage account

  1. Navigate to User Portal → Project → Selected Instance → Service Management → Server-Side Rendering.

  2. Click Connect.

  3. Redeploy your instance.

Note: A charge for Rendy.JS will be added to your monthly bill.

Disconnecting your Rendy.JS account

  1. Navigate to User Portal → Instances → Service Management → Server-Side Rendering.

  2. Click Disconnect.

  3. Redeploy your instance.

Rendy.JS Implementation

To allow Rendy.JS to process bot traffic, ReadyMage infrastructure has the following snippet added to the front-facing Nginx (cache router):

server {
       ...

       # Main application entrypoint
       location / {
        set $rendy_token "";
        
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Rendy-Token $rendy_token;
        
        set $rendy 0;
        if ($http_user_agent ~*
"googlebot|bingbot|yandex|baiduspider|twitterbot|facebookexternalhit|rog
erbot|linkedinbot|embedly|quora link
preview|showyoubot|outbrain|pinterest\/0\.
|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp|AhrefsBot,
scandibot") {
            set $rendy 1;
         }
         
         if ($args ~ "_escaped_fragment_") {
            set $rendy 1;
         }
 
         if ($http_user_agent ~ "rendyjs") {
            set $rendy 0;
         }

         if ($uri ~* "\.
(js|css|xml|less|png|jpg|jpeg|webp|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|e
xe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|i
so|flv|m4v|torrent|ttf|woff|svg|eot)") {
 set $rendy 0;
         }
 
         # We want to always skip requests to Rendy.JS if there are
query arguments. This reduces number of unique urls and keeps the costs
down.
 
          if ($is_args) {
             set $rendy 0;
          }

          if ($rendy = 1) {
             set $rendy_token "inserttoken";
             set $rendyjs_address "prerender.rendyjs.com";
             rewrite .* /?url=https://$host$request_uri? break;
             proxy_pass http://$rendyjs_address;
          }
 
          proxy_pass http://varnish:80;
       }

 
       ...
 }