nginx多服配置秘籍,虚拟主机与负载均衡实战,Nginx多服务配置攻略,虚拟主机与负载均衡实战技巧
虚拟主机配置:一机多站的核心技巧
问题:怎么让一台服务器托管多个网站?
答案就是nginx的虚拟主机功能。简单说,它像在服务器里建独立包厢:
- 端口监听法:给不同服务分配专属端口
nginx复制server { listen 8081; } # 服务A端口server { listen 8082; } # 服务B端口
- 域名区分法:相同端口靠域名分流
nginx复制server { server_name shop.com; } # 电商站点server { server_name blog.com; } # 博客站点
实操四步走:
- 新建配置文件:/etc/nginx/conf.d/site1.conf
- 写入server块:定义端口、域名、根目录(如/var/www/shop)
- 主配置引入:nginx.conf添加 include /etc/nginx/conf.d/*.conf;
- 重载服务:sudo nginx -s reload
避坑提示:
- 同端口多域名时,第一个server会成为默认站点
- 根目录权限务必设755,否则403错误
负载均衡配置:流量分发的艺术
问题:如何应对百万级并发?
用upstream模块把压力分摊到多台服务器:

nginx复制upstream app_cluster {server 192.168.1.101 weight=3; # 性能强的机器多分流量server 192.168.1.102;server 192.168.1.103 max_fails=3 fail_timeout=30s; # 自动剔除故障机}
四大调度策略对比:
策略类型 | 配置关键字 | 适用场景 | 典型痛点 |
---|---|---|---|
轮询调度 | 默认 | 服务器性能均衡 | 会话状态丢失 |
权重分配 | weight=数字 | 新旧服务器混用 | 配置后需压力测试 |
IP哈希 | ip_hash | 需要会话保持 | 局域网用户IP相同 |
最少连接 | least_conn | 长连接服务 | 需配合心跳检测 |
动态扩容技巧:
新增服务器时只需在upstream添加新IP,无需重启服务:
bash复制sudo nginx -s reload # 0停机生效
性能调优:让效率飙升的实战经验
问题:配置后反而变慢了?
八成踩了这些坑:
- 反向代理陷阱:没关闭默认缓冲
nginx复制proxy_buffering off; # 实时流场景必关
- 连接池耗尽:worker_connections值过低
nginx复制events {worker_connections 1024; # 建议>=2048}
高并发三件套配置:
- 超时控制:
nginx复制
proxy_connect_timeout 10s; # 后端连接超时proxy_read_timeout 30s; # 响应等待超时
- 缓存加速:
nginx复制
proxy_cache_path /data/cache levels=1:2 keys_zone=mycache:10m;
- 长连接复用:
nginx复制
keepalive 32; # 维持32个长连接
运维老兵的肺腑之言:上周帮电商平台做618压测,发现当upstream超过8台时,nginx自身成为瓶颈——此时需要改用LVS+Keepalived分层架构。另外提醒小白:修改配置后务必执行nginx -t校验语法,去年某公司把逗号写成中文符号导致全线服务宕机3小时,这种低级错误真该挨板子!