繁体   English   中英

使用NodeJS和Serv-static服务html文件

[英]Serve html file with NodeJS and serve-static

我正在Google App Engine灵活环境(托管VM)上使用Node JS开发Express Web应用程序。 基本上,我只需要提供一个静态HTML页面,因为所有内容都是在Angular JS中动态加载的。

在阅读Express 最佳实践时,我注意到它们不鼓励使用res.sendFile,这正是我在开发中一直在做的事情。

由于我要切换到生产环境,因此我想按照建议使用static-serve,但找不到任何说明如何模拟res.sendFile的文档。

在下面可以找到我当前的代码。

var app = express();
app.use(express.static('www'));
app.get('/', oauth2.required, function (req, res) {
// ...
res.sendFile(path.join(__dirname + '/www/dashboard.html'));
// ...
});

要提供静态文件,您可以在expressJS中定义静态文件夹内容

app.use('/public', express.static(path.join(__dirname, './public')));

这意味着当您击中并添加URL时,如mydomain.com/public/image.png,公用文件夹中的每个文件都将用作静态内容。

编辑:如果可能在您的开发环境中

您可以使用nginx服务器为您提供静态文件,并让node.js服务器处理动态内容。 例如,这通常是最优化的解决方案,用于减少对node.js服务器的请求,这种请求对服务器静态文件的响应要比nginx慢。

Nginx配置可能是

   root /home/myapp;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location /public/ {
            alias /home/myapp/public/;
    }

    location / {
            proxy_pass http://IPADRESSOFNODEJSSERVER:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            #try_files $uri $uri/ =404;
    }

网址开头部分带有/ public /的每个请求都将由nginx处理,其他每个请求都将通过IPADRESSOFNODEJSSERVER:NODEJSPORT代理给您的nodejs应用IPADRESSOFNODEJSSERVER:NODEJSPORT通常, IPADRESSOFNODEJSSERVER是本地主机

使用NGNIX的第二个选项参考doc部分

更好的选择是使用反向代理来提供静态文件。 有关更多信息,请参见使用反向代理。

http://expressjs.com/en/advanced/best-practice-performance.html#proxy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM