Nginx在HTTP协议中的作用

1、静态HTTP服务器

    首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML,图片)通过协议层展示给客户端,配置:

server {
 
   listen 80; # 端口号
 
   location / {
 
     root /usr/share/nginx/html ; # 静态文件路径
 
   }
 
}

2、反向代理服务器

    客户端本来可以直接通过HTTP协议访问某个网站的服务器,网站管理员可以在他们之间加一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。配置

server {
 
   listen 80;
 
   location / {
 
     proxy_pass http: //192 .168.20.1:8080; # 应用服务器HTTP地址
 
   }
 
}

问题:为什么要加一个反向代理,直接访问服务器不行吗?不就是多此一举?
解答:
3、负载均衡

    公司越做越大的时候,网站的访问量野非常大,服务器的压力也越来越大,运行速度也随之慢了很多,一台服务器也不够用        了,于是将一个应用部署到多个服务器上,均衡的分配给请求网站的客户端,即使有一台服务器挂了,其他的也可以正常运         行,也不会影响正常的访问,Nginx可以通过反向代理实现负载均衡。配置

upstream myapp {
 
   server 192.168.20.1:8080; # 应用服务器1
 
   server 192.168.20.2:8080; # 应用服务器2
 
}
 
server {
 
   listen 80;
 
   location / {
 
     proxy_pass http: //myapp ;
 
   }
 
}

以上配置会将请求请求轮询分配到服务器上,也就是一个客户端多次请求,有可能会由多台不同的服务器处理。可以通过ip-hash的方式,根据客户断ip地址的hash值将请求分配给固定的某个服务器处理。配置:

upstream myapp {
 
   ip_hash; # 根据客户端IP地址Hash值将请求分配给固定的一个服务器处理
 
   server 192.168.20.1:8080;
 
   server 192.168.20.2:8080;
 
}
 
server {
 
   listen 80;
 
   location / {
 
     proxy_pass http: //myapp ;
 
   }
 
}

另外,服务器的硬件配置可能有好有差,想把大部分的请求分配给好的服务器,把少量请求分配给差点的服务器,可以通过weight开控制的。配置:

upstream myapp {
 
   server 192.168.20.1:8080 weight=3; # 该服务器处理3/4请求
 
   server 192.168.20.2:8080; # weight默认为1,该服务器处理1/4请求
 
}
 
server {
 
   listen 80;
 
   location / {
 
     proxy_pass http: //myapp ;
 
   }
 
}
4、虚拟主机

    有的网站访问量大,需要负载均衡。然而并不是所有的网站都是这样的,有的网站访问量小,需要节省成本,将多个网站部署到同一台服务器上。

    将2个网站部署到同一台服务器上,2个域名解析到同一个ip地址,但是客户端通过2个域名却可以打开2个完全不同的网站,互补影响,就像2台服务器一样,可以叫2个虚拟主机。配置:

   有的

有的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。

例如将www.aaa.com和www.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

配置:


server {
 
   listen 80 default_server;
 
   server_name _;
 
   return 444; # 过滤其他域名的请求,返回444状态码
 
}
 
server {
 
   listen 80;
 
   server_name www.aaa.com; # www.aaa.com域名
 
   location / {
 
     proxy_pass http: //localhost :8080; # 对应端口号8080
 
   }
 
}
 
server {
 
   listen 80;
 
   server_name www.bbb.com; # www.bbb.com域名
 
   location / {
 
     proxy_pass http: //localhost :8081; # 对应端口号8081
 
   }
 
}

虚拟主机的原理就是通过HTTP请求头的post是否匹配server_name来实现的,

server_name配置还可以过滤有人恶意将某些域名指向你的服务器。

5、fastCGI

    Nginx本身不支持PHP等语言,但是它可以通过fastCGI来将请求扔给某些语言或者框架处理。配置:

server {
 
   listen 80;
 
   location ~ \.php$ {
 
     include fastcgi_params;
 
     fastcgi_param SCRIPT_FILENAME /PHP 文件路径$fastcgi_script_name; # PHP文件路径
 
     fastcgi_pass 127.0.0.1:9000; # PHP-FPM地址和端口号
 
     # 另一种方式:fastcgi_pass unix:/var/run/php5-fpm.sock;
 
   }
 
}

配置中将PHP结尾的请求通过FastCGI交给PHP-FPM处理,php-FPM是PHP的一个FastCGI管理器。

fastcgi_past和proxy_past的区别,如图所示:





   有的

有的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。

例如将www.aaa.com和www.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

配置:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依剑仗天涯

你的鼓励是我创装的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值