NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
rupert
V2EX  ›  NGINX

反向代理中 Nginx 的作用是什么

  •  
  •   rupert · Nov 4, 2016 · 4584 views
    This topic created in 3491 days ago, the information mentioned may be changed or developed.

    比如我服务器开了个 http 服务,端口为 3000, 我必须用 Nginx 反代,然后外网才能访问, 在这个过程中, Nginx 的作用是什么? 如果不用 Nginx 外网就不能访问了?

    Supplement 1  ·  Nov 4, 2016
    我现在用的是 青云, 我不知道是不是和系统设置有关, 云的 IP 是 121.201.24.XX , 我启动了个 80 端口,外网也不能访问,但是用 Nginx 转发后才可以, 故有此一问
    12 replies    2016-11-06 05:42:16 +08:00
    wevsty
        1
    wevsty  
       Nov 4, 2016
    很显然,如果你开了端口 3000 ,那么外网直接访问就必须显式标明 3000 端口号才能访问,如果想不带端口号,那么必须监听 80or443 端口。那么这里 Nginx 的作用就是帮你转发 80 的请求。
    当然,你也可以直接监听 80 ,不用反向代理,这完全看你自己的选择。
    使用反向代理的好处在于,有助于提高吞吐量,另外如果有需要可以方便实现均衡负载。
    yidinghe
        2
    yidinghe  
       Nov 4, 2016 via Android
    nginx 接受请求,然后转发给真正的服务器,并将服务器的返回结果再转发回给浏览器。真正的服务器可以是本机的,也可以是内网的其他服务器,可以是一台,也可以是多台,而 nginx 永远只要一个。
    kslr
        3
    kslr  
       Nov 4, 2016 via Android
    补充楼上两位, nginx 是异步的,比你直接监听性能高。也可以在第一层拦截静态文件,缓解后方压力。
    k9982874
        4
    k9982874  
       Nov 4, 2016 via iPad
    你为啥不直接用 nginx 当 web 服务器,直接在 80 端口提供服务。
    如果非要在 3000 端口服务后端用 nginx ,前面挂 Squid , Varnish 解决。
    skydiver
        5
    skydiver  
       Nov 4, 2016 via Android   ❤️ 2
    监听外网 ip 才能从外网访问,监听 127.0.0.1 只能内网访问,监听 0.0.0.0 内外网都能访问
    rupert
        6
    rupert  
    OP
       Nov 5, 2016
    msg7086
        7
    msg7086  
       Nov 5, 2016
    3000 端口的十有八九是在说 Ruby 或者 Python 之类的独立 Web Server 吧。
    为了安全考虑,直接启动的话是无法被外网访问的。你需要手动指定监听地址,明确要求程序监听外网才行。

    另外 Nginx 的目的是转发请求,把外网发来的请求转发到内网里去。
    Remember
        8
    Remember  
       Nov 5, 2016
    @skydiver 监听 127.0.0.1 只能本机访问
    panda1001
        9
    panda1001  
       Nov 5, 2016
    > Django ’ s chock-full of shortcuts to make Web developer ’ s lives easier, but all those tools are of no use if you can ’ t easily deploy your sites. Since Django ’ s inception, ease of deployment has been a major goal.
    https://docs.djangoproject.com/en/1.9/howto/deployment/
    这是 django 官网的原话,测试服务器不要用在实际部署中,其它的框架同理也一样
    skydiver
        10
    skydiver  
       Nov 5, 2016 via Android
    @Remember 笔误了……
    ryd994
        11
    ryd994  
       Nov 5, 2016
    gunicron+nginx 啦
    或者 gunicorn async worker 也行
    网上有很多测试结果说, gunicorn 的 qps 加不加 nginx 差不多,这是不对的。 nginx 的作用在于 buffer 请求,从而减少 gunicorn 的并发。
    不信用 slowloris 打一下试试?
    ibigbug
        12
    ibigbug  
       Nov 6, 2016
    第一, nginx 的主要作用是利用异步 io 特性提供高并发支持,还有一个基础功能是卸载 HTTPS 证书
    第二, 3000 也能访问,但是你不能监听 127.0.0.1
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   937 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 20:50 · PVG 04:50 · LAX 13:50 · JFK 16:50
    ♥ Do have faith in what you're doing.