1. Nginx是一个高性能的http和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,由老毛子发布
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件代理服务器
主要特点:占有内存少,并发能力强。
并发量:能够支持50000次的并发链接
下载地址:
http://nginx.org/en/download.html
2.反向代理
说明:1.nginx首先需要监听特定的域名
2.当用户根据域名进行在资源访问时,首先会访问nginx
3.之后nginx代替请求者根据内部的配置文件,实现反向代理,将请求转化为特定的请求路径进行资源访问
4.当nginx获取资源后将数据返回给用户。完成请求的正确的响应
二。 Nginx安装
1. 将nginx安装文件保存到本地.不要放到C盘下.不要有中文路径
2. 第一次使用时以管理员身份运行.
3. 访问localhost检测Nginx启动是否正确.
4.找到指定安装目录 cmd
start nginx 启动
nginx -s reload 重启
nginx -s stop 关闭
关于nginx进程说明
当启动一次时,会开启2个进程,一个是主进程,一个是守护进程。
在任务管理器中守护进程先关掉才能关掉主进程
三 nginx的实现反向代理
修改安装包下的conf文件下的nginx.conf文件
我这边代理的是图片回显
server {
listen 80;
server_name image.jt.com;
location / {
root E:\jt-upload;
}
}
说明:image.it.com自定义的域名在hosts文件中配置,E:\jt-upload这是我上传玩图片的一格文件夹
root可以代理 ip地址,默认一般都是localhost,hosts在windows,一般在c盘system下的drivers下的etc下
当然nginx还可以代理多台tomcat服务器,只需要修改配置文件
Nginx反向代理之负载均衡
1.轮循策略
轮循是nginx中默认的负载均衡策略,可以将请求动态的根据配置文件的顺序,发往不同的服务器中
upstream jt{
server 127.0.0.1:8090;
server 127.0.0.1:8091;
server 127.0.0.1:8092;
}
server {
listen 80;
server_name localhost;
location / {
#index index.html index.htm;
proxy_pass http://jt;
}
#表示注释和//一个意思
2.权重方式
说明:可以根据服务器性能动态的分片请求链接数,让高性能的服务器尽量多处理请求 weight=6;
其中数字是任意的,编辑完成后nginx内部调用算法确定配置的权重的比例
#配置tomcat集群 语法 server IP:端口
#默认负载均衡策略:采用轮询机制 2.权重 配置权越高 执行的链接数越大
upstream jt {
server localhost:8091 weight=6;
server localhost:8092 weight=3;
server localhost:8093 weight=1;
}
3.IP_hash
FAQ:如果分布式加集群部署方式,如果用户只登陆一次,将用户的session数据保存到服务器中
,那么这样的方式可能会出现问题,如果某些操作需要获取用户数据之后才能调用,那么采用分布式
加集群的设计会出现用户频繁登陆的现象、
解决办法
可以采用IP_hash方式实现session共享(session粘着)
特点:根据用户的ip地址进行哈希运算,计算出唯一的一台服务器,之后用户访问时,访问特定的服务器,用户ip与
服务器绑定。
缺点:安全性不好,实际开发几乎不用
改进:sso(单点登录技术)
1. 修改nginx配置文件,将需要上线的服务器做下线处理
2. 将需要部署的tomcat服务器先关机.之后部署war包.
3. 将tomcat启动后先测试.测试无误后,修改Nginx配置文件将down去掉.
问题:Nginx重启过程中,如果用户继续发起请求,这时该如何处理??
解决:不用做任何处理.因为Nginx的启动/关闭的速度是很快的(秒级
nginx备用机机制
说明:当所有主机遇忙或者主机宕机时,没有能够及时处理请求的服务器那么备用机开始自行处理
upstream jt {
server localhost:8091 weight=6;
server localhost:8092 weight=3 down;
server localhost:8093 weight=1 backup;
}
nginx健康检测
说明:当后台的服务器出现宕机的现象,当时nginx中的配置文件并没有改变时,请求依然会发往故障的机器.需要人为的维护配置文件,这样的操作不智能.那么采用健康检测机制.可以实现故障的自动的迁移.
属性介绍:
1.max_fails=1 当检测服务器是否正常时,如果检测失败的次数达到规定的次数时,则断定该服务器故障,在规定的时间周期内,不会将请求发往该机器.
2.fail_timeout=60s定义时钟周期
设定健康检测
upstream jt {
server localhost:8091 weight=6 max_fails=1 fail_timeout=60s;
server localhost:8092 weight=3 max_fails=1 fail_timeout=60s;
server localhost:8093 weight=1 max_fails=1 fail_timeout=60s;
}
2.定义超时时间
server {
listen 80;
server_name manage.jt.com;
location / {
#反向代理到url中
#proxy_pass http://localhost:8091;
proxy_pass http://jt;
proxy_connect_timeout 1;
proxy_read_timeout 1;
proxy_send_timeout 1;
}
}
3.nginx中添加请求头参数,可以保证请求参数不丢
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;