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

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

当我们需要在一台服务器上托管多个网站时,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 日。

    312 引用 • 546 回帖

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 742 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 623 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    86 引用 • 122 回帖 • 624 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 2 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 26 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    209 引用 • 358 回帖
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 717 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    77 引用 • 430 回帖
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    107 引用 • 295 回帖
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22754 引用 • 91364 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    85 引用 • 139 回帖
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖 • 1 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 170 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    110 引用 • 54 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    691 引用 • 535 回帖
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    171 引用 • 512 回帖
  • Bug

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

    76 引用 • 1737 回帖 • 1 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 221 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 37 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 1 关注
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 10 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 162 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1794 回帖 • 1 关注
  • 电影

    这是一个不能说的秘密。

    121 引用 • 604 回帖