一、什么是Nginx
1、概念:Nginx(是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·西索夫)所开发,供俄国大型的入口网站及搜索引擎Rambler(漫步者)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。
2、优点
①、占用内存少,并发能力强
②、Nginx专为性能优化而开发, 在高连接并发的情况下,能够支持高达 50,000 个并发连接数的响应.
③、Nginx支持热部署, 可以在不间断服务的情况下,对软件版本进行升级.
二、应用场景
1、http服务器: Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、虚拟主机: 可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡 : 当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
三、配置虚拟主机
1、通过端口区分不同的虚拟主机
修改Nginx配置文件配置文件实现不同端口区分虚拟主机
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#一个server表示一个主机
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
#创建一个新的server
server {
listen 81;
server_name localhost;
location / {
root html81;
index index.html index.htm;
}
}
}
2、通过域名区分不同的虚拟主机
配置IP与域名的映射
192.168.38.128 www.t1.com
192.168.38.128 www.t2.com
配置nginx.conf
#通过域名区分虚拟主机
server {
listen 80;
server_name www.t1.com;
location / {
root html-t1;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.t2.com;
location / {
root html-t2;
index index.html index.htm;
}
}
四、反向代理
1、什么是代理:代理其实就是一个中介,A和B本来可以直连,中间插入一个C,C就是中介。刚开始的时候,代理多数是帮助内网client
访问外网server
用的。
2、正向代理:正向代理代理的是客户端, 服务端不知道实际发起请求的客户端。
3、反向代理:反向代理是指用代理服务器接收客户端的请求,然后将请求转发给网站内部应用服务器,并将从服务器上得到的结果返回给客户端。
4、nginx实现反向代理
#反向代理配置
#upstream中的server是真正处理请求的应用服务器地址
upstream lagou1{
#用server定义HTTP地址
server 192.168.38.128:8080;
}
server {
listen 80;
server_name www.lagou1.com;
location / {
# 利用 proxy_ pass可以将请求代理到upstream命名的HTTP服务
proxy_pass http://lagou1; #转发到的地址
index index.html index.htm;
}
}
upstream lagou2{
#用server定义HTTP地址
server 192.168.38.128:8081;
}
server {
listen 80;
server_name www.lagou2.com;
location / {
proxy_pass http://lagou2;
index index.html index.htm;
}
}
五、负载均衡
1、什么是负载均衡
当一个请求发送过来的时候,Nginx作为反向代理服务器,会根据请求找到后面的目标服务器去处理请求,这就是反向代理. 那么, 如果目标服务器有多台的话,找哪一个服务器去处理当前请求呢 ? 这个合理分配请求到服务器的过程就叫做负载均衡。
2、为什么使用负载均衡
当系统面临大量用户访问,负载过高的时候,通常会使用增加服务器数量来进行横向扩展, 负载均衡主要是为了分担访问量,将请求合理分发给不同的服务器, 避免临时的网络堵塞。
3、负载均衡策略
①、默认策略, 每个请求按照时间顺序逐一分配到不同的服务器,如果某一个服务器下线,能自动剔除
②、配置方式
#负载均衡
upstream lagouedu{
# 用server定义 HTTP地址
server 192.168.38.128:8080 weight=1;
server 192.168.38.128:8081 weight=2;
}
server {
listen 80;
server_name www.lagouedu.com;
location / {
# 利用 proxy_ pass可以将请求代理到upstream命名的HTTP服务
proxy_pass http://lagouedu;
index index.html index.htm;
}
}