什么是Nginx?
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。
- 特点:反向代理 负载均衡 动静分离
Nginx的作用:
1.什么是反向代理
代理服务可简单的分为正向代理和反向代理:
正向代理:
特点:
正向代理: 正向代理类似一个跳板机,代理客户端访问外部资源。
用途:
突破访问显示,提高访问速度,隐藏客户真实ip。
反向代理:
特点:
反向代理:实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。对于常用的场景,就是Web开发中用到的负载均衡服务器。
用途:
隐藏服务端的真实ip,保证内网的安全,负载均衡,提高访问速度
2.什么是负载均衡:
负载均衡的介绍:
nginx应用场景之一就是负载均衡。在访问量较多的时候,可以通过负载均衡,将多个请求分摊到多台服务器上,相当于把一台服务器需要承担的负载量交给多台服务器处理,进而提高系统的吞吐率;另外如果其中某一台服务器挂掉,其他服务器还可以正常提供服务,以此来提高系统的可伸缩性与可靠性。
3.什么是动静分离
动静分离:
动静分离主要是通过nginx+PHP-FPM来实现,其中nginx处理图片,html等静态的文件,PHP处理动态程序。
动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性。
简单点来说,就是用户在请求的时候,如果只是简单的访问图片,html等静态的请求时,nginx直接返回,如果是发送动态请求时候,需要程序进行就由nginx把请求发送给程序,进行动态处理。
Nginx的安装与启动
1.下载Nginx
2.安装Nginx
1.安装c语言的环境
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
2.解压安装包
cd /usr/local
tar -zxvf nginx-1.10.0.tar.gz
3.设置安装目录
cd /usr/upload/nginx-1.10.0
./configure --prefix=/usr/local/nginx
4.编译并安装
make && make install
3.目录结构
目录结构
conf:配置文件
html:静态页面
logs:日志
sbin:启动脚本
4.启动与关闭
cd /usr/local/nginx/sbin
启动:./nginx
关闭:./nginx -s stop
重新加载配置文件:./nginx -s reload
5.配置文件的介绍
#进程数
worker_processes 1;
events {
#连接数
worker_connections 1024;
}
#协议
http {
#媒体类型
include mime.types;
default_type application/octet-stream;
#支持上传文件
sendfile on;
#超时时间
keepalive_timeout 65;
upstream myTomcats{
server 127.0.0.1:8080;
server 127.0.0.1:8090;
}
server {
#监听的端口
listen 80;
#监听的域名
server_name localhost;
#location匹配的url,"/"代表任何路径
location / {
#转发路径
proxy_pass http://myTomcats;
}
}
}
Nginx代理tomcat
1.在Linux中安装两台tomcat
解压两台tomcat到 usr/local 下 分别名为 tomcat-8080 tomcat-8090
cd /usr/local/tomcat-8080/conf
cd /usr/local/tomcat-8090/conf
进入tomcat-8090的配置文件 server.xml 将端口进行修改:
两台tomcat创建工程
cd test
vim index.html
tomcat-8080
tomcat-8090
启动tomcat:
./startup.sh
./catalina.sh run 启动时有日志信息
关闭:
./shutdown.sh
修改权限:chmod 777 名称
2.代理一台tomcat(反向代理)
修改nginx/conf/nginx.conf文件:
3.代理多台tomcat(负载均衡)
修改nginx/conf/nginx.conf文件:
upstream myTomcats{
server 127.0.0.1:8080;
server 127.0.0.1:8090;
}
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://myTomcats;
}
}
因为默认是轮询:
以循环方式分发对应用服务器的请求,将请求平均分发到每台服务器上。
负载均衡策略
6种负载均衡策略
负载均衡策略 | 说明 |
---|---|
轮询 | 默认 |
weight | 权重方式 根据比例分配 |
ip_hash | 依据ip分配方式 根据客户端ip分配 |
least_conn | 按连接数 根据url分配 |
fair | 按响应时间 根据连接数分配 |
url_hash | 依据URL分配 根据相应时间分配 |
如何防止session丢失?
ip_hash:如果tomcat1挂了,仍然会访问tomcat2
session复制:多台tomcat时,复制session非常耗费资源
redis:redis和session都是k、v,都能设置过期时间
动静分离
1.在虚拟机创建image文件夹,并上传图片:
2.修改nginx的nginx.conf文件
location ~* \.(gif|jpg|png|jpeg)$ {
root /usr/upload/images;
}
3.测试: