在一个服务器或IP上使用Apache或Nginx托管多个域名

让我们学习如何配置Apache和Nginx以托管多个网站。

shared hosting相比,通过Cloud server托管网站可以提供更大的灵活性。您可以安装任何您喜欢的内容,按需扩展或缩减,并进行性能和成本优化的配置。

如果您运营多个业务网站但不想分别托管它们,您可以利用Web服务器中的虚拟服务器。让我们看看这个场景。

我有以下两个网站,我想指向我的一个云虚拟机。

  • lab.yaoweibin.com
  • gf.dev

在实施之前,让我们了解它是如何工作的。

在单个Web服务器实例上拥有多个网站的概念称为虚拟服务器。它在配置文件中与URL一起定义。当对一个定义过的URL发出请求时,Web服务器将从相应的文档根目录中提供流量。

配置Apache中的虚拟主机以托管多个域名

  • 登录到Apache HTTP服务器
  • 转到apache配置文件的位置。(在默认安装中,您可以在此位置找到它:/etc/httpd/conf/httpd.conf)
  • 备份httpd.conf文件
  • 创建一个如下所示的VirtualHost容器,我为两个域名创建了这样的容器。

ServerAdmin [email protected]
   DocumentRoot /opt/htdocs/lab
   ServerName lab.yaoweibin.com
   ErrorLog logs/lab.yaoweibin.com-error_log
   CustomLog logs/lab.yaoweibin.com-access_log common



   ServerAdmin [email protected]
   DocumentRoot /opt/htdocs/gf-dev
   ServerName gf.dev
   ErrorLog logs/gf.dev-error_log
   CustomLog logs/gf.dev-access_log common

注意:根据您的需求更改ServerAdminDocumentRootServerNameErrorLogCustomLog的值。

  • 重启Apache HTTP并测试两个URL。

配置Nginx中的虚拟主机以托管多个域名

  • 登录到Nginx服务器
  • 转到您安装Nginx的位置。(在默认位置,您可以在此找到它:/etc/nginx/)

有多种方法可以实现这一点。您可以修改nginx.conf文件或自定义文件(如果有)。您还可以在conf.d文件夹下创建一个custom.conf。选择适合您的方法,并在修改现有文件时备份。

  • 创建一个服务器块,包含我所展示的两个URL。
server {
listen 80;
   root /opt/htdocs/lab;
index index.html index.htm;
   server_name lab.yaoweibin.com;
   location / {
       try_files $uri $uri/ =404;
   }
}

server {
   listen 80;
   root /opt/htdocs/gf-dev;
   index index.html index.htm;
   server_name gf.dev;
   location / {
       try_files $uri $uri/ =404;
   }
}

注意:根据您的需求更改rootserver_name的值。

  • 重启Nginx并测试两个URL

不要忘记更新您的URL的DNS记录以映射到服务器IP。完成后,您应该能够通过上述所做的配置访问这些URL。

结论

这是在单个Web服务器实例(如Apache或Nginx)中托管多个域的快速指南。在您的网站上线后,不要忘记test it against security vulnerabilities

类似文章