1.Nginx介绍
1、什么是nginx?
Nginx(engine x)是一个web服务器、反向代理服务器,使用C语言开发、诞生于俄罗斯
Nginx是一款轻量级的Web 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
特点:反向代理 负载均衡 动静分离
反向代理:nginx代替tomcat接受请求
负载均衡:把请求平均分给多台tomcat
动静分离:把项目中的静态资源交给nginx处理
2、什么是反向代理?
代理服务可简单的分为正向代理和反向代理:
正向代理: 用于代理内部网络对internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端。
所谓的正向代理就是代理服务器替代访问方【用户】去访问目标服务器【服务器】
反向代理: 与正向代理相反, 反向代理是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
所谓的反向代理就是代替服务器接受用户的请求,从目标服务器中取得用户的需求资源,然后发送给用户
2.Nginx安装和启动
1、安装
1)安装c语言环境
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
2)解压安装包
cd /usr/upload
tar -zxvf nginx-1.10.0.tar.gz
3)设置安装目录
cd nginx-1.10.0
./configure --prefix=/usr/local/nginx
4)编译并安装
make && make install
2、目录结构
conf:配置文件
html:静态页面
logs:日志
sbin:启动脚本
3、启动和关闭
启动:./nginx
关闭:./nginx -s stop
重写加载配置文件:./nginx -s reload
3.Nginx代理tomcat
1.部署tomcat
2.修改nginx/conf/nginx.conf文件:
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8080; #tomcat的ip和端口号
}
}
4.代理多台tomcat(负载均衡)
1、在http节点上添加一个upstream
2、修改location /下的反向代理
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;
}
}
5.负载均衡策略
负载均衡策略 | 说明 |
---|---|
轮询 | 默认 |
weight | 权重,按照比例分配 |
ip_hash | 依据ip分配方式 |
least_conn | 按连接数 |
fair | 按响应时间 |
url_hash | 依据URL分配 |
6.如何防止session丢失?
方法一:保证一个ip地址永远的访问一台tomcat服务器,就不存在session丢失问题了(只支持linux)即:upstream中添加 ip_hash;
缺点:如果tomcat1挂了,仍然会访问tomcat2,这时会出现session丢失
方法二:使用tomcat广播机制(session复制)完成session的共享(只支持windows,不推荐的方式)
缺点:多台tomcat时,复制session非常耗费资源
方法三:使用redis服务器的方式完成session的共享(推荐的方式)redis和session都是k、v,都能设置过期时间
7.动静分离
1.创建静态资源
在/usr/upload 目录下 新建images文件夹,并上传图片
2.配置nginx的nginx.conf
server{
listen 80;
server_name localhost;
location ~* \.(gif|jpg|png|jpeg)$ {
root /usr/upload/images;
}
}