个人博客
专注IT梦想的地方

关于Node.JS配合Nginx处理静态页面

今天在学习node.js中Express模块的时候,自己做了一个简单的页面,配合着mongodb数据库,我通过express从mongodb读取数据库然后通过ejs模板引擎宣传出来后,发现css和js等静态文件无法处理,我检查了一番,nginx中并没有禁止对它们的访问,同时代码中也配置了静态文件访问目录,也没有任何的问题,况且在本地测试没有问题,但是上传到服务器并通过nginx代理后发现就有问题了,也不知道为什么,代码如下:

var express = require('express');
var path = require('path');
var ejs = require('ejs'),
    app = express(),


var http = require('http');

app.listen(1818);
//设置值
app.disable('strict routing'); //禁用那些功能
app.set('view engine', 'ejs')
app.set('views', path.join(__dirname, 'views'));
app.engine('ejs', require('ejs').__express); //为ejs扩展名注册EJS,如果使用html扩展名进行注册EJS,那么使用下面的方法
//app.engine('html', require('ejs').renderFile) //此方法使用html扩展名进行注册EJS

//设置静态文件目录
app.use(express.static(path.join(__dirname, 'public')));


app.get('/', function(req, res){
   //这里是处理函数
});

然后我通过nginx将绑定域名的80端口代理到1818端口,重启Nginx和启动node.js文件,发现访问页面尽然对静态文件没能有效,我猜测一定是node.js的问题。

然后百度了许久,大多数还是用的直接通过nginx来处理静态文件,将node.js处理静态文件进行劫持后直接由nginx来处理,于是找到一篇大致是这样解决的:

一、在nginx配置文件中拦截node.js对静态的处理

location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|
favicon.ico){
   root /data/wwwroot/node.webzhi.cn;
   access_log off;
   expires max;
}

大致意思是拦截一下类型的静态文件或文本(个人理解,可能有误)

二、然后将node.js中处理的静态文件均注释

三、在模板中直接添加相对路径即可

当然,如果你们有更好的办法可以留言或者邮箱给我,万分感谢。

赞(157) 打赏
未经允许,不得转载本站任何文章:智言个人博客 » 关于Node.JS配合Nginx处理静态页面

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏