使用Nginx的服务器端渲染输出HTML字符串

时间:2018-12-19 17:55:20

标签: node.js express nginx ssr

我有一个vue-ssr项目,没有使用nuxt.js。服务器是express
项目在3000端口运行。

不使用nginx 时,访问ip:3000,页面运行良好

使用nginx 访问我的域时,我仍然可以获得HTML字符串,但是字符串未呈现,如下所示:

(我没有足够的声誉来发布图片。)

html strings.png

以及类似的请求和响应标头:

request and response headers.png

这是我的Nginx配置:

server {
  server_name mydomain;
  root /my/path;
    location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_pass http://localhost:3000;
    proxy_redirect off;
  }
}

我已经尝试了nuxt.js documents中引入的配置,但是也没有用。

1 个答案:

答案 0 :(得分:0)

如果删除nosniff标头可解决此问题,则表明express由于某种原因未在响应中发送正确的mime类型。

您可以通过直接点击express并检查其返回的标题来进行检查,例如:

curl -D - -o /dev/null http://localhost:3000

如果未返回text / html,则可能是您无意中破坏了应用程序代码中默认的mime类型的迹象。