分享人:韩亚博
1.背景介绍
2.知识剖析
3.常见问题
4.编码实战
5.扩展思考
6.参考文献
7.更多讨论
什么是nginx?
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
2.1反向代理
客户端本来可以直接通过HTTP协议访问某网站应用服务器,网站管理员可以在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。
隐藏服务端
2.2负载均衡
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行
当网站访问量非常大,网站站长开心赚钱的同时,也摊上事儿了。
因为网站越来越慢,一台服务器已经不够用了。于是将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。
同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。
总结:将请求分发到不同的服务器
2.3代码
Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函数。
踩坑
nginx+tomcat+负载均衡
proxy_set_header Host $host;
演示反向代理+负载均衡
代理本地、代理外部
nginx和tomcat区别
nginx常用做静态内容服务和代理服务器(不是你FQ那个代理),直面外来请求转发给后面的应用服务(tomcat,django什么的),tomcat更多用来做做一个应用容器,让java web app跑在里面的东西,对应同级别的有jboss,jetty等东西。
但是事无绝对,nginx也可以通过模块开发来提供应用功能,tomcat也可以直接提供http服务,通常用在内网和不需要流控等小型服务的场景。
A服务器只做反向代理和负载均衡,B、C...服务器实现功能
这种情况对A的要求比较高,如果A挂了,对外的窗口就没有了(相对于用户而言)
https://www.cnblogs.com/yanghj010/p/5980974.html
https://blog.csdn.net/zhangsheng_1992/article/details/51726873
https://blog.csdn.net/zhongguozhichuang/article/details/52816887
https://www.cnblogs.com/flypie/p/5153702.html
https://segmentfault.com/a/1190000008149544
欢迎大家讨论