nginx动静分离和二级域名代理

书中仙
2019.01.07 11:19 字数 1117 阅读 110 评论 0 喜欢 1

众所周知,nginx因为它强大的功能,和简单易上手的特性被越来越多企业青睐,接下来我就带大家来使用nginx解决实际开发中遇到的两个小问题。

先推荐一篇博文:

nginx的安装和基本命令 

这篇博客写很清楚了,我没必要重复写一遍。

首先先来看第一个问题,我们用node.js来做后台的时候,可能会用下面一行代码来搭建静态资源服务器

app.use(express.static(path.join(__dirname, 'public'),{
maxAge: '30d'
}));

但是node并不是很适合处理静态文件,这时候我们需要使用nginx拦截静态资源,也就是说静态资源交给nginx来处理,动态的请求转发给node服务器处理。

直接修改nginx的配置文件nginx.conf


listen 监听80端口,server_name 就是我们的网站域名,然后对图片、css和js进行拦截,location里面的expires是缓存时间,30d就是30天,location里面的root是静态资源的绝对路径,这个一定要写对,写不对的话nginx是找不到的,比如我在项目里静态资源引用路径为


而我的项目在服务器上的绝对路径是 /home/front,然后css,js这些文件在public目录下,所以root这里应该写 /home/front/public

最后一个配置是将其它的请求转发到8080端口,我们的node服务监听8080端口就可以接受到请求。

然后启动nginx


看到响应头上出现nginx,说明我们已经成功了,如果还不确定当前的静态文件是由nginx处理的话,可以去看nginx的日志或者关闭node服务器,直接访问静态资源。

然后再来看第二个问题,通常情况下,一台服务器上可能会布多个项目,他们分别占用不同的端口,比如说我的前台使用80端口,后台使用3000端口,这时候我们访问后台就需要在域名后边加端口号,比如说 www.taohua.com:3000,这就太low了,下面我们就用子域名来解决这个问题。

以阿里云服务器举例

首先添加域名解析



主机记录可以直接写个*号,匹配所有的二级域名,记录值写自己的服务器公网ip地址

nginx配置文件


server_name 我们可以在主域名前加随意的字符串,当然我这里因为是管理后台所以就用admin了。

下面的配置就是将请求转发到3000端口。

然后重启nginx服务器,在浏览器地址栏输入admin.taohua.com,发现和输入www.taohua.com:3000是一样的。

OK,笔者的这篇文章有没有帮你解决一些问题呢?

笔者是一个前端开发人员,这些都是自己琢磨出来的,分享给大家。






支付二维码
登录 后发表评论
${comment_count}条评论 评论

智慧如你,不想发表一点想法咩~

推荐阅读
更多精彩内容