如何使用 Nginx 配置多个域名来托管多个网站

本贴最后更新于 747 天前,其中的信息可能已经时移世易

当我们需要在一台服务器上托管多个网站时,Nginx 可以帮助我们实现此目的。Nginx 是一个开源的高性能 HTTP 和反向代理服务器,也可以用作负载均衡器和邮件代理服务器。在这篇博客中,我将向您展示如何配置 Nginx 以托管多个域名。

步骤 1:安装 Nginx

首先,我们需要安装 Nginx。在 Ubuntu 或 Debian 系统上,可以使用以下命令来安装:

sudo apt update
sudo apt install nginx

如果你使用的是 CentOS/RHEL 系统,则可以使用以下命令来安装:

sudo yum update
sudo yum install nginx

安装完成后,您可以通过访问 IP 地址来测试它是否正常工作。例如,如果您的服务器 IP 地址是 192.168.0.1,那么您可以打开浏览器并输入 "[http://127.0.0.1](http://127.0.0.1/)" 来测试是否成功。

步骤 2:创建网站根目录

接下来,我们需要创建每个网站的根目录。根据惯例,每个网站的文件应该位于 /var/www/ 目录下,并以相应的域名命名。例如,如果您要托管 example.comtest.com 两个网站,则应分别创建两个目录:

sudo mkdir /var/www/example.com
sudo mkdir /var/www/test.com

步骤 3:配置网站

在这一步中,我们需要创建两个简单的 HTML 文件,并将其放入相应的网站根目录中。为了测试服务器是否正常工作,可以在这些文件中添加一些文本内容。

echo "Hello, this is example.com" | sudo tee /var/www/example.com/index.html
echo "Hello, this is test.com" | sudo tee /var/www/test.com/index.html

步骤 4:创建 Nginx 配置文件

现在我们需要为每个网站创建一个 Nginx 配置文件。默认情况下,这些文件应放置在 /etc/nginx/sites-available/ 目录下。

在这个例子中,我们将使用 example.comtest.com 两个域名。在 /etc/nginx/sites-available/ 目录下创建两个配置文件:

  • /etc/nginx/sites-available/example.com.conf
  • /etc/nginx/sites-available/test.com.conf

然后通过以下命令来编辑 example.com.conf 文件:

sudo nano /etc/nginx/sites-available/example.com.conf

将以下内容添加到文件中:

server {
    listen 80;
    listen [::]:80;

    root /var/www/example.com;
    index index.html;

    server_name example.com www.example.com;

    location / {
        try_files $uri $uri/ =404;
    }
}

该文件指定了监听端口、网站的根目录、默认页面名称以及网站的域名。如果您有多个域名,则可以在 server_name 指令中添加更多的域名。

接下来,编辑 test.com.conf 文件:

sudo nano /etc/nginx/sites-available/test.com.conf

将以下内容添加到文件中:

server {
    listen 80;
    listen [::]:80;

    root /var/www/test.com;
    index index.html;

    server_name test.com www.test.com;

    location / {
        try_files $uri $uri/ =404;
    }
}

步骤 5:启用 Nginx 配置文件

现在,我们已经创建了两个 Nginx 配置文件。但是这些文件还没有被 Nginx 加载和启用。

为了启用这些配置文件,我们需要在 /etc/nginx/sites-enabled/ 目录下创建符号链接。通过以下命令来完成:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com.conf /etc/nginx/sites-enabled/

步骤 6:测试 Nginx 配置

现在我们已经完成了所有的配置工作,接下来我们需要测试 Nginx 是否正常工作。

为了测试 Nginx,我们可以打开浏览器并输入 http://example.comhttp://test.com 来访问网站。如果一切正常,您应该能够看到先前创建的 HTML 文件中的文本内容。

如果您无法访问网站,则可能需要检查防火墙设置或 Nginx 配置文件中的语法错误。您可以使用以下命令来检查配置文件:

sudo nginx -t

如果存在语法错误,则将在终端上显示错误消息。如果没有错误,则会显示 “syntax is ok” 的消息。

步骤 7:重载 Nginx 配置

如果我们对 Nginx 配置进行了更改,则需要重新加载配置才能使更改生效。通过以下命令来重新加载 Nginx 配置:

sudo systemctl reload nginx

这将重新加载 Nginx 配置,使我们所做的更改生效。

结论

在本博客中,我们介绍了如何配置 Nginx 以托管多个域名。通过遵循这些简单的步骤,您可以轻松地在同一台服务器上托管多个网站,并确保它们都可以正常工作。

  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Office

    Office 现已更名为 Microsoft 365. Microsoft 365 将高级 Office 应用(如 Word、Excel 和 PowerPoint)与 1 TB 的 OneDrive 云存储空间、高级安全性等结合在一起,可帮助你在任何设备上完成操作。

    5 引用 • 34 回帖 • 1 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    37 引用 • 157 回帖
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    167 引用 • 408 回帖 • 487 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    268 引用 • 666 回帖 • 1 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1742 回帖 • 7 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 662 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 344 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    182 引用 • 3882 回帖
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 10 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • danl
    179 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 1 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    300 引用 • 768 回帖
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 2 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 104 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 265 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖 • 2 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    187 引用 • 832 回帖
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 650 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 184 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 561 关注
  • Access
    1 引用 • 3 回帖 • 4 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 195 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    86 引用 • 165 回帖