Nginx
Nginx介绍
什么是Nginx?
Nginx是一款轻量级的Web 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,启动极快,高并发能力强,在互联网项目中广泛应用。中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。由于它的内存占用少.
特点:反向代理 负载均衡 动静分离
正向代理和反向代理
正向代理: 用于代理内部网络对internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端。
所谓的正向代理就是代理服务器**替代访问方【用户】**去访问目标服务器【服务器】
反向代理: 与正向代理相反, 反向代理是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
所谓的反向代理就是代替服务器接受用户的请求,从目标服务器中取得用户的需求资源,然后发送给用户
负载均衡
负载均衡:数据流量分摊到多个服务器上执行,减轻每台服务器的压力,多台服务器共同完成工作任务,从而提高了数据的吞吐量。
动静分离
动静分离:将静态的资源放到反向代理服务器,节省用户的访问时间
安装nginx
官方网站:http://nginx.org/
- 安装nginx的依赖库
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
- 解压安装包
tar -zxvf nginx-1.10.0.tar.gz
- 配置nginx安装包
cd nginx-1.10.0
./configure --prefix=/usr/local/nginx
- 编译并安装
make && make install
nginx配置文件介绍
#user nobody;
#工作进程
worker_processes 1;
events {
#连接池连接数
worker_connections 1024;
}
#请求方式
http {
#媒体类型
include mime.types;
#默认媒体类型 二进制
default_type application/octet-stream;
#上传文件
sendfile on;
#超时时间
keepalive_timeout 65;
#gzip on;
#服务器配置
server {
#监听端口
listen 80;
#监听域名
server_name localhost;
#请求头信息
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#请求映射规则,/代表所有请求路径
location / {
#请求转发地址
#root html;
proxy_pass http://manage.powershop.com:8080;
#欢迎页
#index index.html index.htm;
#转发连接超时时间
proxy_connect_timeout 600;
#转发读取超时时间
proxy_read_timeout 600;
}
}
}
负载均衡策略
六种负载均衡策略:主要有权重,轮询,根据ip的hash分配,根据url的hash分配
负载均衡策略 | 说明 |
---|---|
轮询 | 默认 |
weight | 权重方式 |
ip_hash | 依据ip分配方式 |
least_conn | 按连接数 |
fair | 按响应时间 |
url_hash | 依据URL分配 |
权重
动静分离
nginx 的动静分离,指的是由 nginx 将客户端请求进行分类转发,静态资源请求(如html、css、图片等)由静态资源服务器处理,动态资源请求(如 jsp页面、servlet程序等)由 tomcat 服务器处理,tomcat 本身是用来处理动态资源的,同时 tomcat 也能处理静态资源,但是 tomcat 本身处理静态资源的效率并不高,而且还会带来额外的资源开销。利用 nginx 实现动静分离的架构,能够让 tomcat 专注于处理动态资源,静态资源统一由静态资源服务器处理,从而提升整个服务系统的性能 。
输入访问路径 ,访问路径下的静态资源
location ~* \.(gif|jpg|png|jpeg)$ {
root /usr/upload/images;
}
处理流程
-
浏览器准备发起请求,访问http://manage.powershop.com,但需要进行域名解析
-
优先进行本地域名解析,因为我们修改了hosts,所以解析成功,得到地址:127.0.0.1
-
请求被发往解析得到的ip,并且默认使用80端口:http://127.0.0.1:80
本机的nginx一直监听80端口,因此捕获这个请求
-
nginx中配置了反向代理规则,将manage.powershop.com代理到127.0.0.1:8080,因此请求被转发
-
后台管理系统得到127.0.0.1:8080请求并处理,完成后将响应返回到nginx
-
nginx将得到的结果返回到浏览器
问题
1、nginx的6种负载均衡策略?
轮询 默认
weight 权重
ip_hash 根据ip分配 指定一个
url_hash 根据url分配 指定一个
fair 响应时间
least_conn 最少连接数
2、如何防止session丢失?
ip_hash:如果tomcat1挂了,仍然会访问tomcat2
session复制:多台tomcat时,复制session非常耗费资源
redis:redis和session都是k、v,都能设置过期时间