一、Nginx常规配置
添加nginx专属用户
useradd -M -d /usr/local/nginx -s /sbin/nologin nginx
修改nginx配置文件
vim nginx.conf
user nginx;
worker_processes 2; #进程工作数
worker_cpu_affinity 01 10;
events {
worker_connections 65535; #并发连接数
}
重启nginx
systemctl reload nginx
修改系统限制
vim /etc/security/limits.conf
nginx - nofile 65535
二、Nginx反向代理
在http{}语句块中添加 upstream{}
vim nginx.conf
http {
upstream backend { #添加后端server列表
server server1 weight=2; #默认使用Round Robin调度算法,可以设置权重
server server2; #需要设置解析
server 127.0.0.1 backup; #backup当所有server全部故障后启用
}
...
server { #定义虚拟主机
listen 80;
server_name myapp.westos.org; # 域名访问,需设置解析
location / {
proxy_pass http://backend; #所有请求转发到backend,实现负载均衡
}
}
}
重启nginx
systemctl reload nginx
测试
for i in {1..10};do curl myapp.westos.org;done
ip_hash算法
通过客户端请求ip进行hash,再通过hash值选择后端server
vim nginx.conf
upstream backend {
ip_hash;
server server1;
server server2;
#server 127.0.0.1 backup;
}
重启nginx
systemctl reload nginx
测试
for i in {1..10}; do curl myapp.westos.org;done
三、nginx流量限制
limit_conn_zone $binary_remote_addr zone=addr:10m; #10m大小的空间
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; #限制请求速率,每秒1次
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /download/ {
limit_conn addr 1;#限制并发数1
#limit_req zone=one; #客户端超出限制的请求都会失败,日志中会显示503
# limit_req zone=one burst=5 #过多的请求将会排队
# limit_req zone=one burst=5 nodelay; #突发流量不需要延迟
limit_rate 50k;#访问速率50k
autoindex on;#自动索引
}
}
重启nginx
systemctl reload nginx
测试
ab -n 10 -c 10 http://192.168.152.200/download/test.jpg