技术解析

反向代理中 Nginx 的作用是什么
0
1975-02-21 04:02:08
idczone

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


很显然,如果你开了端口 3000 ,那么外网直接访问就必须显式标明 3000 端口号才能访问,如果想不带端口号,那么必须监听 80or443 端口。那么这里 Nginx 的作用就是帮你转发 80 的请求。
当然,你也可以直接监听 80 ,不用反向代理,这完全看你自己的选择。
使用反向代理的好处在于,有助于提高吞吐量,另外如果有需要可以方便实现均衡负载。

nginx 接受请求,然后转发给真正的服务器,并将服务器的返回结果再转发回给浏览器。真正的服务器可以是本机的,也可以是内网的其他服务器,可以是一台,也可以是多台,而 nginx 永远只要一个。

补充楼上两位, nginx 是异步的,比你直接监听性能高。也可以在第一层拦截静态文件,缓解后方压力。

你为啥不直接用 nginx 当 web 服务器,直接在 80 端口提供服务。
如果非要在 3000 端口服务后端用 nginx ,前面挂 Squid , Varnish 解决。

监听外网 ip 才能从外网访问,监听 127.0.0.1 只能内网访问,监听 0.0.0.0 内外网都能访问



3000 端口的十有八九是在说 Ruby 或者 Python 之类的独立 Web Server 吧。
为了安全考虑,直接启动的话是无法被外网访问的。你需要手动指定监听地址,明确要求程序监听外网才行。
另外 Nginx 的目的是转发请求,把外网发来的请求转发到内网里去。

监听 127.0.0.1 只能本机访问

> 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 官网的原话,测试服务器不要用在实际部署中,其它的框架同理也一样

笔误了……

gunicron+nginx 啦
或者 gunicorn async worker 也行
网上有很多测试结果说, gunicorn 的 qps 加不加 nginx 差不多,这是不对的。 nginx 的作用在于 buffer 请求,从而减少 gunicorn 的并发。
不信用 slowloris 打一下试试?

第一, nginx 的主要作用是利用异步 io 特性提供高并发支持,还有一个基础功能是卸载 HTTPS 证书
第二, 3000 也能访问,但是你不能监听 127.0.0.1

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服