0
返します。だから私は、エクスプレス構成からapp.use(require('prerender-node').set('prerenderToken', 'token'))
を削除し、以下のnginxの設定をした(私は事前レンダリングトークンを使用しないでください):事前レンダリングは504
# Proxy/load balance (if more than one node.js server used) traffic to our node.js instances
upstream my_server_upstream {
server 127.0.0.1:9000;
keepalive 64;
}
server {
listen 80;
server_name test.local.io;
access_log /var/log/nginx/test_access.log;
error_log /var/log/nginx/test_error.log;
root /var/www/client;
# Static content
location ~ ^/(components/|app/|bower_components/|assets/|robots.txt|humans.txt|favicon.ico) {
root /;
try_files /var/www/.tmp$uri /var/www/client$uri =404;
access_log off;
sendfile off;
}
# Route traffic to node.js for specific route: e.g. /socket.io-client
location ~ ^/(api/|user/|en/user/|ru/user/|auth/|socket.io-client/|sitemap.xml) {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_pass_header X-CSRFToken;
sendfile off;
# Tells nginx to use the upstream server
proxy_pass http://my_server_upstream;
}
location/{
root /var/www/client;
index index.html;
try_files $uri @prerender;
access_log off;
sendfile off;
}
location @prerender {
set $prerender 0;
if ($http_user_agent ~* "baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator") {
set $prerender 1;
}
if ($args ~ "_escaped_fragment_") {
set $prerender 1;
}
if ($http_user_agent ~ "Prerender") {
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$is_args$args break;
}
}
}
しかし、私はcurl test.local.io?_escaped_fragment_=
してテストしたとき、私はgot 504 in 344ms for http://test.local.io
ノードバージョンを取得6.9.1です。私は環境を設定するために迷彩を使用します。
あなたはhttp://127.0.0.1:3000で実行されている事前レンダリングサーバを持っていますか? '?_escaped_fragment_ =' URLにアクセスすると、レンダリングコンソールでどのような出力が表示されますか? –
事前レンダリングサーバは127.0.0.1:3000上で動作し、出力は次のとおりです。 'HTTPの344msで504を得た:// test.local.io'たびI'カールtest.local.io _escaped_fragment_ = ' – user2814599
場合'カールのhttp?: //127.0.0.1:3000/http:// test.local.io/'まだ504を返しますか? Prerenderサーバが動作しているサーバから 'test.local.io'にアクセスできますか? –