最近在练习 node.js ,想做一个新闻网站的例子
node.js 只返回 json 数据
nginx 托管静态的 html 通过加载 json 显示内容
现在有点不理解反向代理的作用,看了一些文章觉得主要是省去了 node.js 写静态文件路由的麻烦
但是如果我让 nginx 运行在 80 端口, node.js 运行在 3000 端口
静态 html 直接加载 3000 端口的数据不是也可以吗?
我的理解有什么错误?类似这样的应用有没有更好的配置方法? 谢谢
1
ryd994 2017-03-09 23:54:37 +08:00 via Android 1
Nginx 反代可以当肉盾用
利用 Nginx 的限制频率和粗略筛查非法请求 而 Nginx 本身只要不是 DDoS ,是打不死的 其次用统一的入口比随便找个高位端口要好得多,特别是考虑某些单位只允许 80 和 443 还有你考虑 https 了么?考虑 gzip 了么?这些扔给 Nginx 做会快得多 再有 HTTP1.1 pipeline |
2
tomato3 2017-03-10 00:52:54 +08:00 via Android
你是个生产数据的面包厂,运行在 3000 , nginx 就是个大街上的一家面包店在 80 ,它可以结账( https 处理等等)打包一些东西( gzip )拒绝一些顾客的骚扰等等,或者简单的指路,它是个代理点,可以让某种面包的订单直接找你沟通,或者让订单从它那里中转一下,甚至还可以在你这家工厂倒闭了以后去其他工厂拿货。如果 nginx 是个军火贩子,那么你不能知道工厂的一些秘密,只能找这个军火贩子拿数据,到底数据具体来源在哪里,无从而知,隐藏后端服务群,避免暴露危险。从另外一方面来说,这个 nginx 也代理了你的请求,后面的工厂不需要从每一个客户那里拿东西,然后交易,工厂只需要从 nginx 那里拿就可以了。你想想,要是一个客户慢吞吞的,你作为一个想要做更多生意的工厂,是不是希望快速结束这笔交易?怎么办?让代理去和你的客户沟通。
|
6
jeremychaochao 2017-03-10 11:40:03 +08:00
@ryd994 我也有遇到这个问题, node 可以起在 80 , https 和 gzip 压缩也不是问题,框架里都有集成,我觉得是 nginx 在处理反代,安全,静态文件加载方面上更专业,功能也更强大,术业有专攻罢了
|
7
libook 2017-04-07 00:05:11 +08:00
有一个概念叫“前后端分离”,就是前端和后端是两个项目,前端开发构建完是一个文件夹,后端运行起来是监听一个端口的服务,用 nginx 可以配置不同的 location 代理到不同端,比如网站根目录“/”就默认代理到前端的文件夹,“/api/”开头的路径就代理到后端的端口上。
好处有很多;比如 nginx 处理静态文件的效率很高;可以额外加很多头信息,实现如客户端缓存等机制;也可以在一台服务器上跑 nginx ,然后背后有一堆服务器跑服务端, nginx 上面自带负载均衡功能;前端项目文件也可以随时脱离 nginx 放到分布式的 CDN 上面,提升网络覆盖率和传输速率。 |