Nginx简介
-
公司产品出现瓶颈
- 公司刚上线,并发量小,用户使用的少,在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户
- 但是慢慢的,用户量越来越多,并发量慢慢增大,这时候一台服务器已经满足不了我们的需求了
- 于是我们横向扩展,增加一些服务器,这个时候几个项目启动在不同的服务器上,用户需要访问,就需要增加一个代理服务器,通过代理服务器来帮我们转发和处理请求
-
什么是Nginx
- Nginx (engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Ramber.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。2011年6月1日,nginx 1.0.4发布
- 其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站
- Nginx是一个安装非常的简单、配置文件非常简洁(还能够支持 perl 语法)、Bug非常少的服务。Nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级
- Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达50,000个并发连接数的响应
Nginx作用
- Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理
反向代理
-
正向代理 (VPN)
-
反向代理
-
正向代理前端,反向代理后端
负载均衡
- Nginx提供的负载均衡策略有两种:内置策略和扩展策略
- 内置策略:轮询,加权轮询,ip_hash
- 轮询:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
- 加权轮询:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
- ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
- 扩展策略:其他第三方策略
- 内置策略:轮询,加权轮询,ip_hash
动静分离
- 动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
Nginx的安装
windows
- 下载nginx压缩包,解压,进入目录唤出cmd使用
start nginx
命令开启nginx,选择cmd方式运行nginx目录不能有中文 nginx.exe -s quit
或者nginx.exe -s stop
关闭nginx- stop表示立即停止nginx,不保存相关信息
- quit表示正常退出nginx,并保存相关信息
nginx -s reload
重启nginx
Linux
-
下载
tar -zxvf
命令解压压缩包,进入目录[root@localhost nginx-1.20.0]#
-
安装nginx相关依赖包
yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel
-
执行
./configure
命令自动配置 -
再进行
make && make install
命令 -
确定nginx安装目录
whereis nginx
[root@localhost nginx-1.20.0]# whereis nginx nginx: /usr/local/nginx
-
进入nginx安装目录的sbin文件夹,
./nginx
启动nginx -
进入nginx安装目录的conf文件夹
cat nginx.conf
可以查看默认端口等配置 -
然后就可以通过默认端口访问到nginx了
-
如果访问失败,检查是否开启防火墙,是否没有开启默认端口,如果用的是服务器,再去看看服务器是否开启对应端口
-
关于iptables防火墙的操作
# 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 service iptables start # 重启防火墙 service iptables restart # 永久关闭防火墙 chkconfig iptables off
-
关于firewall防火墙的操作
# 1、查看firewall服务状态 systemctl status firewalld # 出现Active: active (running)切高亮显示则表示是启动状态 # 出现 Active: inactive (dead)灰色表示停止,看单词也行 # 2、查看firewall的状态 firewall-cmd --state # 3、开启、重启、关闭、firewalld.service服务 # 开启 service firewalld start # 重启 service firewalld restart # 关闭 service firewalld stop # 4、查看防火墙规则 firewall-cmd --list-all # 5、查询、开放、关闭端口 # 查询端口是否开放 firewall-cmd --query-port=8080/tcp # 开放80端口 firewall-cmd --permanent --add-port=80/tcp # 移除端口 firewall-cmd --permanent --remove-port=8080/tcp # 重启防火墙(修改配置后要重启防火墙) firewall-cmd --reload # 参数解释 # firwall-cmd:是Linux提供的操作firewall的一个工具 # --permanent:表示设置为持久 # --add-port:标识添加的端口
-
Nginx常用命令
cd /usr/local/nginx/sbin
./nignx # 启动
# 关闭nginx
./nginx -s quit # quit表示正常退出nginx,并保存相关信息
./nginx -s stop # stop表示立即停止nginx,不保存相关信息
./nginx -s reload # 重新加载配置文件
ps aux|grep nginx # 查看nginx进程
配置部署Nginx
- nginx目录下 /conf/nginx.conf 文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 负载均衡配置,tomcat开启多个不同端口的相同项目模拟分布式
upstream test {
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 weight=1;
}
# 监听80端口
server {
listen 80;
server_name localhost;
# test是负载均衡的名字,/ 路径下的请求被拦截转发
location / {
root html;
index index.html index.htm;
proxy_pass http://test;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}