1、什么是Nginx
Nginx是一个高性能的web服务器和反向代理服务器。用于HTTP、HTTPS、SMTP、POP3和IMAP协议
2、负载均衡的几种常用方式和算法实现原理
- 轮询 (用一个初始值为0的计数器,当有请求时计数器+1,计数器=ip数时计数器归零,以此从ip列表获取ip)
upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333; }
- 加权轮询 (与轮询算法的区别是ip列表按照权重重复加入ip)
upstream mysvr { server 127.0.0.1:7878 weight=1; server 192.168.10.121:3333 weight=2; }
- Ip hash (通过hash函数计算ip得到一个hash值,并与服务器列表数量取模运算)由于同一个ip会映射到同一台服务器,因此可以解决session不同步问题(实际上session可以放到redis中以解决同步问题)
upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333; ip_hash; }
- 其他(最小连接数、随机、加权随机、fair、url_hash等)
3、常用配置
worker_processes 8; 工作进程个数
events {
use epoll; #支持大量连接和非活动连接
worker_connections 65535; #每个工作进程能并发处理(发起)的最大连接数(包含所有连接数)
multi_accept on; #nginx在已经得到一个新连接的通知时,接收尽可能多的连接
accept_mutex on; #防止惊群现象发生,默认为on
}
error_log /data/logs/nginx/error.log; 错误日志打印地址
access_log /data/logs/nginx/access.log 进入日志打印地址
#静态http服务器配置 可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。
server {
listen80; # 端口号
location / {
root /usr/share/nginx/html; # 静态文件路径
}
#负载均衡配置
upstream mysvr {
server 192.168.10.121:3333;
server 192.168.10.122:3333;
}
#反向代理配置
server {
....
location ~*^.+$ {
proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
}
}
#热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #热备
}
4、nginx和apache的区别
- 轻量级,同样起Web服务,比apache占更少内存及资源
- 抗并发,nginx处理请求是异步非阻塞的,而apache阻塞型
- apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别,C10K)可以对应一个进程