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

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

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

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 140 回帖
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 442 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 1 关注
  • 笔记

    好记性不如烂笔头。

    310 引用 • 794 回帖
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 415 关注
  • 分享

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

    247 引用 • 1794 回帖 • 2 关注
  • Anytype
    3 引用 • 31 回帖 • 13 关注
  • iOS

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

    87 引用 • 139 回帖 • 1 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1395 回帖
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 3 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    107 引用 • 153 回帖
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 99 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 740 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 590 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 7 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 298 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 548 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 79 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 400 关注
  • Git

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

    211 引用 • 358 回帖
  • Unity

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

    25 引用 • 7 回帖 • 132 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖 • 1 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖 • 1 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖