nginx服务器有什么作用?什么叫反向代理?为什么要使用反向代理?

分享人:韩亚博

1.背景介绍

2.知识剖析

3.常见问题

4.编码实战

5.扩展思考

6.参考文献

7.更多讨论

1.背景介绍

什么是nginx?

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

2.知识剖析

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库函数。

3.常见问题

踩坑

nginx+tomcat+负载均衡

proxy_set_header Host $host;

4.编码实战

演示反向代理+负载均衡

代理本地、代理外部

5.扩展思考

nginx和tomcat区别

nginx常用做静态内容服务和代理服务器(不是你FQ那个代理),直面外来请求转发给后面的应用服务(tomcat,django什么的),tomcat更多用来做做一个应用容器,让java web app跑在里面的东西,对应同级别的有jboss,jetty等东西。

但是事无绝对,nginx也可以通过模块开发来提供应用功能,tomcat也可以直接提供http服务,通常用在内网和不需要流控等小型服务的场景。

A服务器只做反向代理和负载均衡,B、C...服务器实现功能

这种情况对A的要求比较高,如果A挂了,对外的窗口就没有了(相对于用户而言)

6.参考文献

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

7.更多讨论

分享到此结束

欢迎大家讨论