目录
1、什么是Nginx
下面有这样的场景:
项目刚上线的时候,并发量小,用户使用的少,所以在开发的时候,一个jar包启动应用就够了,然后内部的tomcat返回内容给用户。
但是慢慢的,使用平台的用户越来越多,并发量慢慢增大了,这时候一台服务器就满足不了我们的需求了。
于是我们横向扩展,又增加了服务器。这个时候几个项目启动就在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。
我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验,所以我们使用了Nginx。
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。 [12]
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。 [13]
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
2、Nginx的作用
①反向代理
要了解反向代理首先要清楚正向代理
例如我们平时玩吃鸡的时候,需要挂VPN才能够流畅的游玩,这其实就是一种正向代理,代理我们本机的客户端去请求外网服务器
而反向代理就例如我们平时访问www.baidu.com,就是一种反向代理,代理服务器端去接收请求
②负载均衡
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为:轮询和加权轮询。扩展策略,就天马行空,只有你想不到的没有他做不到的。
轮询
加权轮询
iphash对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
③动静分离
动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如: css、html、jpg、js等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后。我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
3、Nginx常用命令
cd usr/local/nginx/sbin/
①启动 ./nginx
②停止 ./nginx -s stop
③安全退出 ./nginx -s quit
④重新加载配置文件 ./nginx -s reload
⑤查看nginx进程 ps -ef | grep nginx
4、Nginx配置文件
初始的nginx服务器主配置是比较长的,不过结构和内容还是比较清晰的。通过上面的配置文件内容分析,我们可以总结出以下nginx.conf的基本结构:
... #全局块
events #events块
{
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN] #location块
{
...
}
}
server #server块
{
...
}
... #http全局块
}
例如我们要配置反向代理和负载均衡配置