如何在CentOS7服务器系统上配置Nginx多个虚拟主机?

在单台服务器上托管多个网站是现代Web托管的基础,它能极大地节约成本并简化管理,在CentOS 7系统中,使用高性能的Nginx Web服务器来配置多虚拟主机(也称为服务器块)是一种非常流行且高效的做法,本文将详细介绍如何在CentOS 7上一步步配置Nginx以支持多个虚拟主机。

如何在CentOS7服务器系统上配置Nginx多个虚拟主机?

准备工作

在开始之前,请确保您已经具备以下条件:

  • 一台运行CentOS 7的服务器。
  • 一个具有sudo权限的非root用户。
  • Nginx已成功安装在服务器上,如果尚未安装,可以通过sudo yum install epel-releasesudo yum install nginx命令进行安装。
  • 两个(或更多)指向您服务器公网IP地址的域名,在本教程中,我们将使用site1.comsite2.com作为示例。

第一步:创建网站目录结构

为了保持清晰和有序,我们为每个虚拟主机创建独立的目录来存放其网站文件,这些目录通常位于/var/www下。

使用以下命令为两个示例站点创建目录:

sudo mkdir -p /var/www/site1.com/html
sudo mkdir -p /var/www/site2.com/html

为了确保Nginx进程(通常以nginx用户运行)能够读取这些目录中的文件,我们需要修改它们的所有权:

sudo chown -R nginx:nginx /var/www/site1.com/html
sudo chown -R nginx:nginx /var/www/site2.com/html

我们可以适当调整一下权限,确保Web服务器能够访问目录内容:

sudo chmod -R 755 /var/www

第二步:为每个站点创建示例页面

我们在每个站点的根目录中创建一个简单的index.html文件,这样做便于我们稍后测试配置是否成功。

site1.com创建首页:

sudo vim /var/www/site1.com/html/index.html

在文件中输入以下内容:

<html>
  <head>欢迎来到 Site1.com</title>
  </head>
  <body>
    <h1>成功!这是 site1.com 的首页。</h1>
  </body>
</html>

保存并退出,同样,为site2.com创建首页:

sudo vim /var/www/site2.com/html/index.html

输入略有不同的内容以便区分:

如何在CentOS7服务器系统上配置Nginx多个虚拟主机?

<html>
  <head>欢迎来到 Site2.com</title>
  </head>
  <body>
    <h1>成功!这是 site2.com 的首页。</h1>
  </body>
</html>

第三步:为每个虚拟主机创建Nginx配置文件

Nginx的主配置文件是/etc/nginx/nginx.conf,但最佳实践是为每个虚拟主机创建独立的配置文件,并将其存放在/etc/nginx/conf.d/目录下,这样便于管理和维护。

配置第一个虚拟主机

site1.com创建配置文件:

sudo vim /etc/nginx/conf.d/site1.com.conf

将以下配置粘贴到文件中:

server {
    listen 80;
    listen [::]:80;
    server_name site1.com www.site1.com;
    root /var/www/site1.com/html;
    index index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    error_log /var/log/nginx/site1.com.error.log;
    access_log /var/log/nginx/site1.com.access.log;
}

配置说明:

  • listen 80;:监听80端口(HTTP)。
  • server_name site1.com www.site1.com;:指定此服务器块响应哪些域名的请求。
  • root /var/www/site1.com/html;:设置该网站的根目录。
  • index index.html index.htm;:定义默认的首页文件。
  • location / { ... }:定义URL匹配规则,try_files指令会尝试按顺序查找文件,若找不到则返回404错误。
  • error_logaccess_log:为该站点指定独立的日志文件,便于排查问题。

配置第二个虚拟主机

同样,为site2.com创建配置文件:

sudo vim /etc/nginx/conf.d/site2.com.conf

粘贴类似配置,只需修改server_nameroot指令:

server {
    listen 80;
    listen [::]:80;
    server_name site2.com www.site2.com;
    root /var/www/site2.com/html;
    index index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    error_log /var/log/nginx/site2.com.error.log;
    access_log /var/log/nginx/site2.com.access.log;
}

第四步:测试并重新加载Nginx配置

在应用新配置之前,务必检查Nginx配置文件的语法是否正确:

sudo nginx -t

如果一切正常,您会看到类似以下的输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

测试通过后,重新加载Nginx以使更改生效:

sudo systemctl reload nginx

如果您的防火墙(如firewalld)正在运行,请确保HTTP服务已被允许:

如何在CentOS7服务器系统上配置Nginx多个虚拟主机?

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

第五步:测试虚拟主机

您的多虚拟主机已经配置完成,您可以通过修改本地计算机的hosts文件来模拟DNS解析,从而进行测试。

在您的本地电脑上找到hosts文件:

  • Linux/Mac: /etc/hosts
  • Windows: C:WindowsSystem32driversetchosts

在文件末尾添加以下两行(将your_server_ip替换为您服务器的实际IP地址):

your_server_ip site1.com
your_server_ip site2.com

保存文件后,在浏览器中分别访问http://site1.comhttp://site2.com,您应该能看到之前为每个站点创建的专属首页内容,这证明多虚拟主机配置已成功。


相关问答FAQs

Q1:如果我直接用服务器的IP地址访问,Nginx会显示哪个网站的内容?

A1: 当Nginx收到一个HTTP请求时,它会根据请求头中的Host字段与server_name进行匹配,如果使用IP地址直接访问,或者访问一个未被任何server_name定义的域名,Nginx会使用一个“默认”虚拟主机,它会选择按字母顺序排在第一个或者配置文件中加载的第一个server块作为默认,为了精确控制,您可以在某个server块的listen指令后添加default_server参数,listen 80 default_server;,这样该块就会明确成为默认主机。

Q2:我可以在一个Nginx配置文件(服务器块)中托管多个域名吗?

A2: 是的,完全可以,您只需要在server_name指令中用空格分隔列出所有需要指向该网站文件的域名即可,如果site1.comanother-domain.net都希望显示相同的内容,您可以这样配置:
server_name site1.com www.site1.com another-domain.net www.another-domain.net;
这样,所有指向这四个域名的请求都会被同一个服务器块处理,并从同一个root目录提供服务。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-26 06:22
下一篇 2025-10-26 06:28

相关推荐

  • 短信营销文案_营销宣传风格文案

    春日特惠来袭!精选商品,低至五折。错过今天,等待明年!立即行动,惊喜连连等你领!退订回T。

    2024-07-20
    0018
  • 什么是应用服务器规范文件?

    应用服务器规范文件是一份详细描述应用服务器配置、部署和运行要求的文件。它包括硬件规格、操作系统版本、支持的软件和服务、安全设置、性能标准以及维护和监控流程等内容,以确保服务器能够稳定高效地运行应用程序。

    2024-09-02
    0014
  • apk api

    APK 是 Android 应用程序的安装包,API 是应用程序接口。

    2025-04-20
    002
  • 为什么服务器邮件发送不出去?

    服务器邮件发送不出去的原因及解决方法一、背景与概述在数字化时代,电子邮件已成为人们日常交流的重要工具,有时我们会遇到邮件发送不出去的问题,这不仅会影响个人沟通,还可能对企业的业务造成严重影响,本文将详细探讨服务器邮件发送不出去的常见原因,并提供相应的解决方法,二、常见原因及解决方法 配置问题原因:邮件发送需要正……

    2024-11-07
    0060

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信