免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
概述
本文主要介绍Linux实例如何在Web服务中绑定域名。
详细信息
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
本文主要介绍如下几点内容,您可以根据实际需要选择。
Nginx服务绑定域名
如下为配置Nginx服务绑定域名的步骤,此处的Nginx程序以通过Yum安装的Nginx为例,您需要根据实际情况进行调整。
- 执行如下命令编辑Nginx的配置文件。
vi /etc/nginx/nginx.conf
- 将默认的“server {...}”配置段修改为如下内容。
server {
listen 80 default_server;
server_name www.example.com;
root /home/web1;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50.xhtml;
location = /50x.html {
}
}
server {
server_name www.aliyundoc.com;
root /home/web2;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}说明:此处的配置主要实现如下两点目的。您需要根据实际需要调整对应的配置内容。
您需要根据实际需要调整对应的配置内容。
- 访问www.example.com地址时,等于访问
/home/web1
目录。 - 访问www.aliyundoc.com地址时,等于访问
/home/web2
目录。
- 访问www.example.com地址时,等于访问
- 按 Ecs 键退出编辑模式,输入 :wq 保存并退出。
- 执行如下命令,重启Nginx服务。
nginx -s reload
Tomcat服务绑定域名
如下为配置Tomcat服务绑定域名的步骤,其中部分与Tomcat相关的路径,您需要根据实际情况进行调整。
- 执行如下命令,编辑Tomcat 配置文件。
vi /[$Tomcat_Home]/conf/server.xml
说明:[$Tomcat_Home]指Tomcat程序的主目录,现场以实际情况为准。
- 找到如下的默认配置。
- 将上述内容修改为如下配置。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Value className="org.apache.catalina.valves.AccessLogValue" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %c "%r" %s %b" />
</Host>
<Host name="www.example.com" appBase="/data/wwwroot/web" unpackWARs="true" autoDeploy="true">
<Content path="" docBase="/data/wwwroot/web" debug="0" reloadable="false" crossContext="true" />
<Value className="org.apache.catalina.valves.AccessLogValue" directory="logs" prefix="www.example.com_access_log." suffix=".txt" pattern="%h %l %u %c "%r" %s %b" />
</Host>
<Host name="www.aliyundoc.com" appBase="/data/wwwroot/default" unpackWARs="true" autoDeploy="true">
<Content path="" docBase="/data/wwwroot/default" debug="0" reloadable="false" crossContext="true" />
<Value className="org.apache.catalina.valves.AccessLogValue" directory="logs" prefix="www.aliyundoc.com_access_log." suffix=".txt" pattern="%h %l %u %c "%r" %s %b" />
</Host>说明:此处的配置主要实现如下两点目的。您需要根据实际需要调整对应的配置内容。
- 访问www.aliyundoc.com地址时,等于访问
/data/wwwroot/default
目录。 - 访问www.example.com地址时,等于访问
/data/wwwroot/web
目录。
- 访问www.aliyundoc.com地址时,等于访问
- 按Ecs键退出编辑模式,输入:wq保存并退出。
- 执行如下命令,关闭Tomcat服务。
/[$Tomcat_Home]/bin/shutdown
- 执行如下命令,启动Tomcat服务。
/[$Tomcat_Home]/bin/startup
Apache服务绑定域名
如下为配置Apache服务绑定域名的步骤。
- 执行如下命令,进入Apache站点配置文件目录。
cd /[$Apache_Home]/conf/vhosts/
说明:[$Apache_Home]指Apache程序的主目录,现场以实际情况为准。
- 执行
vi test.conf
命令新建一个配置文件,按 i 键进入编辑模式,参考如下配置,复制到test.conf文件中。Order allow,deny
Deny from all
DocumentRoot /alidata/www/test
ServerName www.example.com
ServerAlias example.com
ErrorLog "/alidata/log/httpd/test-error.log"
CustomLog "/alidata/log/httpd/test.log"说明:请根据实际情况修改网站域名、网站根目录、日志文件名和目录等配置信息。
- 执行如下命令,重启Apache服务。
/[$Apache_Home]/bin/apachectl restart
Apache服务配置实现多域名跳转
假设网站的目录为/var/www/html
,网站目录结构如下。
开启Apache的虚拟主机功能,参考如下图,配置虚拟主机到对应的目录即可。
修改完成后,可以实现如下几点效果。
- 访问a.example.com地址时,等于访问
/var/www/html/a
目录。 - 访问b.example.com地址时,等于访问
/var/www/html/b
目录。 - 访问c.example.com地址时,等于访问
/var/www/html/c
目录。
Apache服务配置二级域名
在参考如下步骤配置二级域名前,您需要有一个泛域名解析的顶级域名,比如“aliyun.com”。
- 在Apache的httpd.conf配置文件中启用mod_rewrite模块。
- 在httpd.conf配置文件的结尾处添加如下内容。
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1说明:
/usr/local/etc/apache
是Apache服务配置文件所在路径,您需要根据实际情况修改。 - 在
/usr/local/etc/apache
路径下执行vi vhost.map
命令,新建文件,并复制如下内容到该文件中。www.aliyun.com /usr/local/www/data-dist/aliyun
bbs.aliyun.com /usr/local/www/data-dist/aliyunbbs
anyname.aliyun.com /usr/local/www/data-dist/anyname说明:请注意保持 域名+空格+绝对路径 的格式。
- 在
/usr/local/www/data-dist
目录下创建对应的网站目录,比如example、demo、learn等目录。创建目录后的效果如下。- 访问example.aliyundoc.com地址时,等于访问
/usr/local/www/data-dist/aliyun
目录。 - 访问demo.aliyundoc.com地址时,等于访问
/usr/local/www/data-dist/aliyunbbs
目录。 - 访问learn.aliyundoc.com地址时,等于访问
/usr/local/www/data-dist/anyname
目录。
- 访问example.aliyundoc.com地址时,等于访问
- 您可以通过修改vhost.map来增加、删除或修改您的二级域名和所指向的实际路径,不需要重启Apache服务。
Apache禁止未经许可的域名访问ECS实例上的网站
如果ECS实例上的网站被人恶意指向,例如,您的实例IP地址为“192.168.0.1”,正常服务的域名为“www.aliyundoc.com”, 恶意用户使用其他的域名,比如“www.example.net”,指向“10.10.10.10”,此时访问www.aliyundoc.com网站时会出现您的网站内容。您可以参考如下内容,可以通过Apache的虚拟主机功能变通的解决该问题。
- 此处涉及的示例信息如下。
Apache版本号 ECS实例上的网站 2.2.15 http://www.aliyundoc.com/
http://www.example.com/ - 参考该命令
vi /etc/httpd/conf/httpd.conf
,打开Apache的配置文件,参考如下内容进行编辑。
- 加入如下代码,使Apache启用基于主机名的虚拟主机功能。
NameVirtualHost *:80
- 加入如下代码。当客户端访问的Host名不在之后设置的网站域名内时,会指向一个403错误页面。其中
DocumentRoot
是放置错误提示页面的目录,在该目录中可以放置一个简单的HTML页面提示用户正在访问非法域名。<VirtualHost *:80>
DocumentRoot /var/www/html/error/
ServerName *
ErrorLog logs/dummy-host.example.com-error_log
CustomeLog logs/dummy-host.example.com-access_log common
</VirtualHost> - 加入如下代码。告知Apache合法的网站主机头,您需要根据实际情况修改这个代码块内容,如示例中的“www.aliyundoc.com”和“www.example.com”。
<VirtualHost *:80>
ServerAdmin admin@aliyundoc.com
DocumentRoot /var/www/html/another/
ServerName www.aliyundoc.com
ErrorLog logs/www.aliyundoc.com-error_loh
CustomLog logs/www.aliyundoc.com-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/html/
ServerName www.example.com
ErrorLog logs/www.example.com-error_loh
CustomLog logs/www.example.com-access_log common
</VirtualHost>
- 加入如下代码,使Apache启用基于主机名的虚拟主机功能。
- 执行如下命令,重启Apache服务。
/etc/httpd/bin/apachectl restart
- 如果您希望其他域名在访问您的网站时直接返回403错误,您可以修改第2步中的b步骤,将其代码修改为如下内容。
<VirtualHost *:80>
DucumentRoot /var/www/html/error/
ServerName *
<Location>
Order Allow, Deny
Deny from all
</Location>
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log commom
</VirtualHost> - 重启Apache服务。
适用于
- 云服务器ECS
文档内容是否对您有帮助?