当前位置:首页 > 虚拟主机 > 正文

nginx实现多虚拟主机配置文件

inx通过server块配置不同域名/IP及根目录,实现多

基础概念

Nginx通过在主配置文件(通常是/etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf)中定义多个server块来实现多虚拟主机,每个server块对应一个独立的网站站点,基于客户端请求头中的Host字段进行匹配和路由,以下是具体实施步骤:

nginx实现多虚拟主机配置文件  第1张


配置步骤详解

操作环节 示例代码片段
编辑主文件 http{}区域内添加多个server段落,每个代表一个虚拟主机 http { ... server { ... } server { ... } ... }
设置监听端口 所有虚拟主机共享同一端口(如80/443),Nginx根据域名自动区分流量 listen 80;(所有主机共用)或为特定IP绑定端口(例:listen 192.168.1.1:80;
定义域名解析规则 使用server_name指定允许访问该站点的完整合格域名(FQDN) server_name example.com www.example.com;
关联网站根目录 通过root指令设置站点静态资源的存储路径 root /var/www/html/site1;(对应第一个站点)、root /data/webapps/blog;(第二个站点)
日志分离管理 为不同站点分配独立访问日志与错误日志,便于故障排查 access_log /var/log/nginx/site1_access.log combined; error_log /var/log/nginx/site1_error.log;
支持 若涉及PHP等脚本语言,需配合location指令配置FastCGI代理参数 location ~ .php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; include fastcgi_params; }}

高级优化技巧

SSL证书部署

为每个域名申请独立证书并启用HTTPS:

server {
    listen 443 ssl http2;
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;
    ...
}

注:推荐使用Let’s Encrypt免费证书,并通过ACME协议自动续签。

路径别名映射

利用alias实现非标准目录结构的文件服务:

location /images/ {
    alias /storage/uploads/2025/;
}

此配置可将URL路径/images/重定向到服务器本地的/storage/uploads/2025/物理路径。

负载均衡扩展

当单台服务器性能不足时,可在upstream模块定义后端集群:

upstream backend_cluster {
    server 10.0.0.101 weight=3;
    server 10.0.0.102 max_fails=2;
}
server {
    location /api/ {
        proxy_pass http://backend_cluster;
    }
}

常见问题与解答

Q1: 为什么修改配置后新站点仍然无法访问?

解决方案:依次执行以下检查流程:

  1. 确保语法正确性 → 运行nginx -t进行校验;
  2. 重新加载配置 → 执行nginx -s reload命令;
  3. 防火墙放行端口 → 使用ufw allow 80/tcpufw allow 443/tcp
  4. SELinux策略调整(CentOS特有)→ 设置setsebool httpd_can_network_connect on

Q2: 如何快速定位哪个站点占用过多资源?

监控方法:结合Prometheus+Grafana采集指标,重点关注:

  • nginx.stub_status模块提供的实时连接数统计;
  • ngx_http_request_count计数器分析各location的流量分布;
  • worker进程CPU利用率(通过top -Hp <PID>查看)。

通过上述配置体系与调试方法,您可以轻松构建高可用、易维护的多租

0