预渲染,用于前端单页面的项目,做到被seo收录的

#创建用户 useradd -d /home/prerender -m prerender

#安装nginx cd /usr/local wget http://nginx.org/download/nginx-1.16.1.tar.gz tar -xzf nginx-1.16.1.tar.gz cd nginx-1.16.1 ./configure –with-http_ssl_module make make install

#测试prerender cd /home/prerender #https://github.com/prerender/prerender npm install prerender npm install prerender-memory-cache –save vi server.js

const prerender = require(‘prerender’); const server = prerender();

server.use(require(‘prerender-memory-cache’))

server.start();

node server #访问 http://ip:3000/render?url=http://www.baidu.com

#配置nginx #参考https://gist.github.com/thoop/8165802 /usr/local/nginx/sbin/nginx -c /home/prerender/nginx.conf /usr/local/nginx/sbin/nginx -s stop

nginx.conf

events {
    worker_connections  1024;
}

http {
	include       /usr/local/nginx/conf/mime.types;
    default_type  application/octet-stream;
	
	# Change YOUR_TOKEN to your prerender token
	# Change example.com (server_name) to your website url
	# Change /path/to/your/root to the correct value
	server {
		listen 81;
		server_name baidu.com;
	 
		root   /data/home/h5;
		index  index.html;

		location / {
			try_files $uri @prerender;
		}
	 
		location @prerender {
			#0 只有搜索引擎访问才走预渲染
			#set $prerender 0;
			set $prerender 1;
			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 "127.0.0.1:3000";
				rewrite .* /$scheme://$host$request_uri? break;
				proxy_pass http://$prerender;
			}
			if ($prerender = 0) {
				#rewrite .* /index.html break;
			}
		}
	}
}