Nginx实现⾼可⽤⼀、课程⽬标
Nginx介绍
Ningx应⽤场景
Windows环境下安装Nginx
Windows环境下实现反向代理
Windows环境下实现负载均衡
Nginx实现⽹关接⼝跨域解决⽅案
Nginx实现防盗链
Nginx防⽌DDOS
Linux环境下安装Nginx
Linux环境下实现反向代理
Linux环境下nginx+keepalived实现⾼可⽤
Linux环境下Session共享解决⽅案
⾼并发解决⽅案
⼀、nginx⼊门
1.1什么是nginx?
nginx是⼀款⾼性能的http 服务器/反向代理服务器及电⼦邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官⽅测试nginx能够⽀⽀撑5万并发链接,并且cpu、内存等资源消耗却⾮常低,运⾏⾮常稳定,所以现在很多知名的公司都在使⽤nginx。
1.2 nginx应⽤场景
1、http服务器。Nginx是⼀个http服务可以独⽴提供http服务。可以做⽹页静态服务器。
2、虚拟主机。可以实现在⼀台服务器虚拟出多个⽹站。例如个⼈⽹站使⽤的虚拟主机。
3、反向代理,负载均衡。当⽹站的访问量达到⼀定程度后,单台服务器不能满⾜⽤户的请求时,需要
⽤多台服务器集可以使⽤nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载⾼宕机⽽某台服务器闲置的情况。
1.3 Windows环境下安装Nginx
解压:nginx-windows
双击:
能看到nginx欢迎界⾯说明,nginx安装成功
演⽰下 nginx做静态服务器
1.3.1 windows常⽤命令
< -s stop –停⽌
1.4 nginx优缺点
占内存⼩,可以实现⾼并发连接、处理响应快。
可以实现http服务器、虚拟主机、反向代理、负载均衡。
nginx配置简单
可以不暴露真实服务器IP地址
1.f 介绍
1.4.f⽂件的结构
nginx的配置由特定的标识符(指令符)分为多个不同的模块。
指令符分为简单指令和块指令。
简单指令格式:[name parameters;]
块指令格式:和简单指令格式有⼀样的结构,但其结束标识符不是分号,⽽是⼤括号{},块指令内部可以包含simple directives 和block directives, 可以称块指令为上下⽂(e.g. events, http, server, location)
conf⽂件中,所有不属于块指令的简单指令都属于main上下⽂的,http块指令属于main上下⽂,server块指令http上下⽂。
1.4.2 配置静态访问
Web server很重要⼀部分⼯作就是提供静态页⾯的访问,例如images, html page。nginx可以通过不同的配置,根据request请求,从本地的⽬录提供不同的⽂件返回给客户端。
打开安装⽬录下的f⽂件,默认配置⽂件已经在http指令块中创建了⼀个空的server块,在nginx-1.8.0中的http块中已经创建了⼀个默认的server块。内容如下:
server {
listen      80;
server_name  localhost;
location / {
root  html;
index  index.html index.htm;
}
error_page  500 502 503 504  /50x.html;
location = /50x.html {
root  html;
}
}
1.4 nginx实现反向代理
1.4.1什么是反向代理?
反向代理(Reverse Proxy)⽅式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部⽹络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为⼀个反向代理服务器。
启动⼀个Tomcat 127.0.0.1:8080
使⽤nginx反向代理 直接跳转到127.0.0.1:8080
1.4.1Host⽂件新增
127.0.0.1 8080.itmayiedu
127.0.0.1 b8081.itmayiedu
1.4.f 配置
配置信息:
server {
listen      80;
server_name  8080.itmayiedu;
location / {
proxy_pass  127.0.0.1:8080;
index  index.html index.htm;
}
}
server {
listen      80;
server_name  b8081.itmayiedu;
location / {
proxy_pass  127.0.0.1:8081;
index  index.html index.htm;
}
}
1.5 nginx实现负载均衡
1.5.1什么是负载均衡
负载均衡 建⽴在现有⽹络结构之上,它提供了⼀种廉价有效透明的⽅法扩展⽹络设备和服务器的带宽、增加吞吐量、加强⽹络数据处理能⼒、提⾼⽹络的灵活性和可⽤性。
负载均衡,英⽂名称为Load Balance,其意思就是分摊到多个操作单元上进⾏执⾏,例如Web服务器、FTP服务器、企业关键应⽤服务器和其它关键任务服务器等,从⽽共同完成⼯作任务。
1.5.3负载均衡策略
1、轮询(默认)
每个请求按时间顺序逐⼀分配到不同的后端服务器,如果后端服务器down掉,能⾃动剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;nginx 配置文件
}
2、指定权重
指定轮询⼏率,weight和访问⽐率成正⽐,⽤于后端服务器性能不均的情况。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3、IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问⼀个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
1.5.4配置代码
upstream backserver {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen      80;
server_name  www.itmayiedu;
location / {
proxy_pass  backserver;
index  index.html index.htm;
}
}
1.5.4宕机轮训配置规则
server {
listen      80;
server_name  www.itmayiedu;
location / {
proxy_pass  backserver;
index  index.html index.htm;
proxy_connect_timeout 1;
proxy_send_timeout 1;
proxy_read_timeout 1;
}
}
1.6 nginx解决⽹站跨域问题
server {
listen      80;
server_name  www.itmayiedu;
location /A {
proxy_pass  a.a:81/A;
index  index.html index.htm;
}
location /B {
proxy_pass  b.b:81/B;
index  index.html index.htm;
}
}
1.7 nginx配置防盗链
location ~ .*\.(jpg|jpeg|JPG|png|gif|icon)$ {
valid_referers blocked www.itmayiedu www.itmayiedu;
if ($invalid_referer) {
return 403;
}
}
1.7 nginx配置DDOS
1.7.1限制请求速度
设置Nginx、Nginx Plus的连接请求在⼀个真实⽤户请求的合理范围内。⽐如,如果你觉得⼀个正常⽤户每两秒可以请求⼀次登录页⾯,你就可以设置Nginx每两秒钟接收⼀个客户端IP的请求(⼤约等同于每分钟30个请求)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。