nginx多服配置秘籍,虚拟主机与负载均衡实战,Nginx多服务配置攻略,虚拟主机与负载均衡实战技巧

虚拟主机配置:一机多站的核心技巧

​问题:怎么让一台服务器托管多个网站?​
答案就是nginx的虚拟主机功能。简单说,它像在服务器里建独立包厢:

  • ​端口监听法​​:给不同服务分配专属端口
nginx复制
server { listen 8081; }  # 服务A端口server { listen 8082; }  # 服务B端口
  • ​域名区分法​​:相同端口靠域名分流
nginx复制
server { server_name shop.com; }  # 电商站点server { server_name blog.com; }  # 博客站点

​实操四步走​​:

  1. 新建配置文件:/etc/nginx/conf.d/site1.conf
  2. 写入server块:定义端口、域名、根目录(如/var/www/shop)
  3. 主配置引入:nginx.conf添加 include /etc/nginx/conf.d/*.conf;
  4. 重载服务:sudo nginx -s reload
    ​避坑提示​​:
  • 同端口多域名时,第一个server会成为默认站点
  • 根目录权限务必设755,否则403错误

负载均衡配置:流量分发的艺术

​问题:如何应对百万级并发?​
用upstream模块把压力分摊到多台服务器:

nginx多服配置秘籍,虚拟主机与负载均衡实战,Nginx多服务配置攻略,虚拟主机与负载均衡实战技巧  第1张
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}

​高并发三件套配置​​:

  1. 超时控制:
    nginx复制
    proxy_connect_timeout 10s;  # 后端连接超时proxy_read_timeout 30s;     # 响应等待超时
  2. 缓存加速:
    nginx复制
    proxy_cache_path /data/cache levels=1:2 keys_zone=mycache:10m;
  3. 长连接复用:
    nginx复制
    keepalive 32;  # 维持32个长连接

运维老兵的肺腑之言:上周帮电商平台做618压测,发现当upstream超过8台时,​​nginx自身成为瓶颈​​——此时需要改用LVS+Keepalived分层架构。另外提醒小白:修改配置后务必执行nginx -t校验语法,去年某公司把逗号写成中文符号导致全线服务宕机3小时,这种低级错误真该挨板子!