![](/img/trans.png)
[英]Serve static .json file in Nodejs with expressjs and serve-static
[英]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.