什么是Nginx
Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。
其特点是占有内存少,并发能力强,事件驱动,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx的反向代理、负载均衡、正向代理
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
简单而言就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已。
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host:$server_port;
}
}
当我们访问localhost的时候,就相当于访问localhost:8080
负载均衡
**A.**增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上;将负载分发到不同的服务器,也就是我们所说的负载均衡。
**B.**客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。
简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。而Nginx目前支持自带的3种负载均衡策略,还有2种常用的第三方策略。
1+2、轮询(默认)+权重
每个请求按时间顺序逐一分配到后端服务器,如果后端服务器down掉,会自动剔除
可以在上面加上权重weight,用于后端服务器性能不均匀的情况
upstream myserver {
server localhost:8080 weight=9;
server localhost:8081 weight=1;
}
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
root html;
proxy_pass http://myserver;
proxy_set_header Host $host:$server_port;
index index.html index.htm;
}
}
3、ip_hash
根据用户请求ip来计算服务器地址,使得同一个ip的所有请求都落在同一个服务器上,可以解决session问题
upstream myserver {
ip_hash;
server localhost:8080