先看百科中的定义:Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强;
采用的是多进程单线程和多路IO复用模型(epoll模型):一个主进程和多个工作进程。工作进程是单线程的,且不需要特殊授权即可运行;
- 使用多进程模式,不仅能提高并发率,而且进程之间是相互独立的;
- worker进程数,一般会设置成机器cpu核数,过多的worker会导致进程之间相互竞争cpu和上下文切换;
- master进程管理worker进程,当woker进程退出后,会自动重新启动新的woker进程;
Nginx 配置: nginx.conf
#启动worker进程数,通常设置成和cpu的数量相等
worker_processes 1;
#工作模式及连接数上限
events {
worker_connections 1024; #单个后台worker process进程的最大并发链接数
}
http {
#设定负载均衡的服务器列表
upstream load_balance_server {
#weigth参数表示权值,权值越高被分配到的几率越大
server 192.168.1.101:81 weight=1;
server 192.168.1.101:82 weight=1;
server 192.168.1.101:83 weight=8;
}
#HTTP服务器
server {
#侦听80端口
listen 80;
#定义使用域名访问
server_name www.baidu.com;
#对所有请求进行负载均衡请求
location / {
root /root; #定义服务器的默认网站根目录位置
index index.html index.htm; #定义首页索引文件的名称
proxy_pass http://load_balance_server ;#请求转向load_balance_server 定义的服务器列表
}
}
}
Nginx高可用方案:
目前,比较流行的实现Nginx高可用方案就是:keepalived+nginx实现主备方案。