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

请教 Node.js 搭配 Nginx 的问题

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

    最近在练习 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     Solana     820 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 21:26 PVG 05:26 LAX 14:26 JFK 17:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86