V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
witcat
V2EX  ›  Node.js

请教 Node.js 搭配 Nginx 的问题

  •  
  •   witcat · 2017-03-09 23:17:15 +08:00 · 2808 次点击
    这是一个创建于 2815 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在练习 node.js ,想做一个新闻网站的例子
    node.js 只返回 json 数据
    nginx 托管静态的 html 通过加载 json 显示内容

    现在有点不理解反向代理的作用,看了一些文章觉得主要是省去了 node.js 写静态文件路由的麻烦
    但是如果我让 nginx 运行在 80 端口, node.js 运行在 3000 端口
    静态 html 直接加载 3000 端口的数据不是也可以吗?

    我的理解有什么错误?类似这样的应用有没有更好的配置方法? 谢谢

    7 条回复    2017-04-07 00:05:11 +08:00
    ryd994
        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
    tomato3
        2
    tomato3  
       2017-03-10 00:52:54 +08:00 via Android
    你是个生产数据的面包厂,运行在 3000 , nginx 就是个大街上的一家面包店在 80 ,它可以结账( https 处理等等)打包一些东西( gzip )拒绝一些顾客的骚扰等等,或者简单的指路,它是个代理点,可以让某种面包的订单直接找你沟通,或者让订单从它那里中转一下,甚至还可以在你这家工厂倒闭了以后去其他工厂拿货。如果 nginx 是个军火贩子,那么你不能知道工厂的一些秘密,只能找这个军火贩子拿数据,到底数据具体来源在哪里,无从而知,隐藏后端服务群,避免暴露危险。从另外一方面来说,这个 nginx 也代理了你的请求,后面的工厂不需要从每一个客户那里拿东西,然后交易,工厂只需要从 nginx 那里拿就可以了。你想想,要是一个客户慢吞吞的,你作为一个想要做更多生意的工厂,是不是希望快速结束这笔交易?怎么办?让代理去和你的客户沟通。
    witcat
        3
    witcat  
    OP
       2017-03-10 00:58:47 +08:00
    @tomato3 谢谢,我已经懂了 1 楼的也很全面
    ywgx
        4
    ywgx  
       2017-03-10 09:08:45 +08:00 via iPhone
    @tomato3 web 服务器把自己做不了的动态数据请求外包给其他做,简单一句话的时候解释的这么麻烦
    tomato3
        5
    tomato3  
       2017-03-10 11:28:18 +08:00 via Android
    @ywgx 在自己方面觉得比较简单,但是站在对方的角度就不一样了。在对方的理解角度解释更有利于表达。
    jeremychaochao
        6
    jeremychaochao  
       2017-03-10 11:40:03 +08:00
    @ryd994 我也有遇到这个问题, node 可以起在 80 , https 和 gzip 压缩也不是问题,框架里都有集成,我觉得是 nginx 在处理反代,安全,静态文件加载方面上更专业,功能也更强大,术业有专攻罢了
    libook
        7
    libook  
       2017-04-07 00:05:11 +08:00
    有一个概念叫“前后端分离”,就是前端和后端是两个项目,前端开发构建完是一个文件夹,后端运行起来是监听一个端口的服务,用 nginx 可以配置不同的 location 代理到不同端,比如网站根目录“/”就默认代理到前端的文件夹,“/api/”开头的路径就代理到后端的端口上。
    好处有很多;比如 nginx 处理静态文件的效率很高;可以额外加很多头信息,实现如客户端缓存等机制;也可以在一台服务器上跑 nginx ,然后背后有一堆服务器跑服务端, nginx 上面自带负载均衡功能;前端项目文件也可以随时脱离 nginx 放到分布式的 CDN 上面,提升网络覆盖率和传输速率。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2831 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:20 · PVG 15:20 · LAX 23:20 · JFK 02:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.