Server-side rendering with Rendertron - Angular 5 without firebase

穿精又带淫゛_ 提交于 2019-12-01 11:15:42

Is http://pqr.com/render your personal rendering server? If not, you have to forward the request to https://render-tron.appspot.com/render or deploy Rendertron separately yourself.

Also right now you just assign the created express-instance to a constant (const app = express('')), configure it and export it for firebase (which you don't use). Instead you have to run express yourself on a node.js server.

I'm using an Angular 6 app and I was facing the same issue. I did it without using an express server or firebase, instead I used NGINX to check the agent header and route them to rendertron if it's a bot or to the angular app if it's a normal user.

Incase, if you wanted to take this approach using NGINX. Use this configuration.

server {
    server_name your-server-name;

    root /path to your dist;

    index index.html;

    location ~ /\. {
        deny all;
    }

    location / {
        try_files $uri @prerender;
    }

    location @prerender {
        set $prerender 0;

        if ($http_user_agent ~* "googlebot|yahoo|bingbot|baiduspider|yandex|yeti|yodaobot|gigabot|ia_archiver|facebookexternalhit|twitterbot|developers\.google\.com") {
            set $prerender 1;
        }

        if ($args ~ "_escaped_fragment_|prerender=1") {
            set $prerender 1;
        }

        if ($http_user_agent ~ "Prerender") {
            set $prerender 0;
        }

        if ($prerender = 1) {
            rewrite .* /render/$scheme://$host$request_uri? break;
            proxy_pass https://render-tron.appspot.com; #You can use our own hosted Rendertron
        }

        if ($prerender = 0) {
            rewrite .* /index.html break;
        }
    }
}

And yes, you can now pre-render if it's a bot.

If you still wanted to do it using a express, rendertron offers an express middleware. You can check it out here.

I found this NGINX configuration from prerender.io, you can find something useful for different server or any other approach in their repo.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!