一、 Nginx简介
1.引入
公司产品出现瓶颈:
最开始,并发量小,用户使用的少,低并发,一个jar包启动应用就OK了,内部Tomcat返回内容给用户。
随着用户越来越多,并发量增大,一台服务器不满足需求了。
于是我们横向扩展,增加服务器。这时项目部署在不同的服务器上,用户需要访问,就要增加一个代理服务器了,通过代理服务器转发和处理请求。
代理服务器需要:
(1)负载均衡:(服务器1【16G】、服务器2【32G】、… 、服务器n【8G】性能不同)
(2)反向代理:(代理服务器端)【正向代理(代理客户端):如VPN】
2.什么是Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
其特点是占用内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。
Nginx安装简单、配置简洁(还支持perl语法)、Bug少。Nginx启动容易,并且几乎可以做到7*24不间断运行,运行数月也不需要重启。还支持不间断服务的情况下进行软件版本的升级。
Nginx代码完全用C语言从头写成,能够支持高达 50,000 个并发连接数的响应。
3.Nginx作用
1.反向代理
2.负载均衡
Nginx提供2种负载均衡策略:内置策略(轮询、加权轮询、IP hash)和扩展策略(天马行空,随你的便)。
3.动静分离
软件开发中,不需要后台处理的请求(css、html、jpg、js等文件)叫做静态文件。动态网站根据一定规则把不变的资源和经常改变的资源区分开,动静资源拆分后,根据静态资源的特点做缓存操作,提高资源响应速度。
二、Nginx安装
1.Windows安装
nginx: download官网下载稳定版本。
nginx-1.20.2.zip解压后即可。
访问本地:http://localhost/
2.Linux安装
http://nginx.org/en/download.html 官网相同位置下载稳定版本。
whereis nginx //查看本机是否有Nginx
nginx //查看nginx命令是否有效
上传nginx-1.20.2.tar.gz到服务器-----访问服务器IP:80
tar -zxvf nginx-1.20.2.tar.gz //解压Nginx包
cd nginx-1.20.2 //进到文件目录
./configure //安装
make
make install
whereis nginx //查看安装是否成功
cd 到nginx安装目录
cd sbin
./nginx //执行Nginx文件
没报错就成功了
3.Nginx常用命令(Linux)
cd /usr/local/nginx/sbin/
./nginx //启动
./nginx -s stop //停止
./nginx -s quit //安全退出
./nginx -s reload //重新加载配置文件
ps aux|grep nginx //查看nginx进程
注意:如果连接不上,检查阿里云安全组是否开放端口,或者服务器防火墙是否开放端口! 相关命令:
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;
三、演示
1.nginx.conf文件
upstream service-name{ //被代理服务名(随便叫)service-name
server 127.0.0.1:8080 weight=1;
//被代理服务端口127.0.0.1:8080
//weight=1负载均衡配比
server 127.0.0.1:8081 weight=1;
//被代理服务端口127.0.0.1:8081
//weight=1负载均衡配比
}
location / {
proxy_pass http://service-name; //代理服务,service-name与upstream保持一致
}
感谢狂神提供的免费课程: