nodejs

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

智言 2016年04月26日 阅读(13418) 0

今天在学习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中处理的静态文件均注释

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

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

智言

业务开发请联系QQ:5679361

评论 抢沙发

评论前必须登录!

 


如果你觉得本站内容对你有所帮助,比如提升你对编程方面的认识,你可以通过上面的二维码请博主喝杯咖啡,安好。

WEB前端开发部落(公众号:webapp_club)

群列表

前端初级学习群:初级Web前端学习群(后期为支付入群)
PHP初级学习群:PHP(MySQL)学习交流群
QQ群仅作为相关领域讨论平台,均提供高质量问题交流,禁止闲聊,无法接受的朋友请勿加群!
进群需要通过这里获取进群码才能进群哦!

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

支付宝扫一扫打赏

微信扫一扫打赏