如何在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

相关推荐

  • 什么是负载均衡副本?它在系统架构中扮演什么角色?

    负载均衡副本是现代分布式系统中不可或缺的一部分,它通过将请求分散到多个服务器或服务实例上来提高系统的可用性、可靠性和性能,本文将详细介绍负载均衡副本的概念、实现方式、优缺点以及常见的应用场景,什么是负载均衡副本?负载均衡副本是指在一个分布式系统中,为了分担单点压力和提高系统整体性能,将相同的服务部署在多个节点上……

    2024-11-28
    006
  • 如何高效实现服务器间的文件传输?

    服务器间文件传输是网络环境中常见的操作,它涉及到数据从一个服务器系统移动到另一个服务器系统,这种传输可以是为了备份、同步、迁移或其他业务需求,以下是关于服务器间文件传输的一些关键点和考虑因素:传输方式1、直接连接: 通过局域网(LAN)或广域网(WAN)直接连接两台服务器进行文件传输,2、使用FTP/SFTP……

    2025-01-16
    005
  • 用虚拟主机登录微信,会面临封号和隐私泄露风险吗?

    虚拟主机登录微信安全吗”这一问题,答案是明确的:极不安全,并且强烈不建议任何人尝试,这种操作方式存在多方面的巨大风险,不仅可能导致个人隐私泄露,更有可能直接导致微信账号被封禁,为了全面理解其背后的风险,我们需要从技术、协议和实际应用等多个维度进行深入剖析,核心风险:为什么强烈不推荐在虚拟主机上登录微信,通常是指……

    2025-10-23
    0046
  • 地区代码_地区

    地区代码通常用于标识一个国家、省份、城市或其他地理区域。中国的国家代码是+86,美国的国家代码是+1,这些代码常用于电话号码中以表示电话的注册地。

    2024-06-30
    0021

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信