Nginx的常规使用

 

 


一、背景介绍

 

 

什么是ngnix

Nginx是一个http服务器。是一个使用c语言开发的高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师IgorSysoev所开发,官方测试nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

总结三大优点:性能高、轻量级、易操作

 

nginx的使用场景

1、反向代理

2、负载均衡

3、动静分离

反向代理:反向代理(ReverseProxy)是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,简单来说就是真实的服务器不能直接被外部网络访问,想要访问必须通过代理。

反向代理的作用

1、防止主服务器被恶意攻击

2、为负载均衡和动静分离提供实现支持

负载均衡:使用反向代理同时代理多个相同内容的应用服务器(比如tomcat),将客户端请求分发到各个应用服务器上并接收响应返回给客户端

负载均衡的作用:当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此一来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

动静分离:运用Nginx的反向代理功能分发请求:所有动态资源的请求交给应用服务器,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器

动静分离的作用:主要是nginx处理静态页面的效率远高于tomcat的处理能力,使用c语言开发的nginx对静态资源每秒的吞吐量是使用Java语言开发的tomcat的6倍,也远高于其它应用服务器

总而言之:nginx应用之所以广泛,我认为这归功于它的灵活配置,一个nginx.conf文件解决大部分问题,不论是nginx创建虚拟服务器、nginx的反向代理服务器,还是nginx的负载均衡,几乎都在这个配置文件中进行。服务器上只负责把nginx搭好,跑起来即可。而且它本身轻量级,不需要占用服务器太多资源就可以达到较好的效果,是一个非常值得推崇的服务器。

 

 

 


二、知识剖析

 

1、nginx反向代理是如何实现的

a.主要是对proxy_pass的使用

2、nginx负载均衡是如何实现的

a.两台或以上的应用服务器

b.主要是upstream和反向代理的联合使用

 

 

nginx的upstream常用分发策略

1)、轮询(默认)——每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2)、weight ——指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

3)、ip_hash ——每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。

4)、backup——其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

5)、down——表示当前的server暂时不参与负载

3、nginx动静分离是如何实现的

a、正则表达式匹配静态资源后缀

b、找到静态资源本地存放路径

 

 

 

 

 

 


 

三、常见问题

 

都是web服务器,nginx和tomcat的区别是什么?

 

 


4.解决方案

 

答:虽然Tomcat也可以认为是web服务器,内部集成了web服务器的相关功能,但通常它仍然会和Nginx配合在一起使用。严格的来说,Nginx 应该叫做「web Server」;而 Tomcat 则是一个「Application Server」,或者更准确的来说,是一个「Servlet/JSP」应用的容器(Ruby/Python 等其他语言开发的应用也无法直接运行在 Tomcat 上),这种特性导致了它们在使用中有明确的分工职责。

 

 


五、编码实战

 


六、扩展思考

 

七、参考文献

 

1.CSDN博客:http://blog.csdn.net/daybreak1209/article/details/51554045

2.CSDN博客:https://www.cnblogs.com/microtiger/p/7623858.html

 

八、更多讨论

Q1、正向代理和反向代理的区别?

答:正向代理是代理客户端发送请求,反向代理是代理服务端接收请求

Q2、动态资源里面嵌入的静态资源有必要使用动静分离吗

答:nginx处理静态资源的性能比普通的应用服务器高6倍左右

Q3、server_name可以配置多个吗

答:可以

今天的分享就到这里啦,欢迎大家提问和探讨!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值