在一个服务器或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
注意:根据您的需求更改ServerAdmin,DocumentRoot,ServerName,ErrorLog,CustomLog的值。
- 重启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;
}
}
注意:根据您的需求更改root,server_name的值。
- 重启Nginx并测试两个URL
不要忘记更新您的URL的DNS记录以映射到服务器IP。完成后,您应该能够通过上述所做的配置访问这些URL。
结论
这是在单个Web服务器实例(如Apache或Nginx)中托管多个域的快速指南。在您的网站上线后,不要忘记test it against security vulnerabilities。