Nginx 服务绑定域名
以 YUM 安装的 Nginx 为例:
执行命令 vi /etc/nginx/nginx.conf 编辑 Nginx 的配置文件, 将默认的 server {...} 配置修改为以下内容:
- server {
- listen 80 default_server;
- server_name www.123.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.abc.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.123.com 时, 跳转到 /home/web1 目录.
访问 www.abc.com 时, 跳转到 /home/web2 目录.
执行命令 nginx -s reload 重启 Nginx 服务.
Tomcat 服务绑定域名
执行命令 vi /etc/TOMCAT_HOME/conf/server.xml 编辑 Tomcat 配置文件.
将上述内容修改为:
- <Host name="localhost" appBase="webapps" unpackWARs="true" autoPlay="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="120.76.210.250" appBase="/data/wwwroot/web" unpackWARs="true"
- autoPlay="true">
- <Content path="" docBase="/data/wwwroot/web" debug="0" reloadable="false"
- crossContext="true" />
- <Value className="org.apache.catalina.valves.AccessLogValue" directory="logs"
- prefix="120.76.210.250_access_log." suffix=".txt" pattern="%h %l %u %c "
- %r " %s %b" />
- </Host>
- <Host name="www.abc.com" appBase="/data/wwwroot/default" unpackWARs="true"
- autoPlay="true">
- <Content path="" docBase="/data/wwwroot/default" debug="0" reloadable="false"
- crossContext="true" />
- <Value className="org.apache.catalina.valves.AccessLogValue" directory="logs"
- prefix="www.abc.com_access_log." suffix=".txt" pattern="%h %l %u %c " %r
- " %s %b" />
- </Host>
访问 www.abc.com 时, 默认跳转到 /data/wwwroot/default 目录.
访问 120.76.210.250 时, 默认跳转到 /data/wwwroot/Web 目录.
运行 bin/shutdown 关闭 Tomcat 服务, 再运行 bin/startup 重启 Tomcat 服务.
Apache 服务绑定域名
以一键安装包配置的 Apache 环境为例:
执行命令 cd /alidata/server/httpd/conf/vhosts/ 进入站点配置文件目录.
执行命令 vi aa.conf 新建一个配置文件, 按下键盘上的字母 "I" 键, 复制并粘贴以下内容:
- Order allow,deny
- Deny from all
- DocumentRoot /alidata/www/test
- ServerName www.test.com
- ServerAlias test.com
- ErrorLog "/alidata/log/httpd/test-error.log"
- CustomLog "/alidata/log/httpd/test.log"
注意: 您需要修改对应的日志名字以区分不同网站的日志信息.
执行命令 /alidata/server/httpd/bin/apachectl restart 重启 Apache 服务.
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 .
在 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 服务配置文件所在路径, 您需要根据实际情况修改.
执行命令 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 下创建对应目录: aliyun , bbs , any name 等目录.
通过浏览器访问 www.aliyun.com 时, 实际上访问的就是 /usr/local/www/data-dist/aliyun 目录下的文件.
通过浏览器访问 bbs.aliyun.com 时, 实际上访问的就是 /usr/local/www/data-dist/aliyunbbs 目录下的文件.
您可以通过修改 vhost.map 来增加, 删除和修改您的二级域名和所指向的实际路径, 不需要重启 Apache 服务.
Apache 禁止未经许可的域名访问 ECS 上的网站
ECS 实例上的网站被人恶意指向, 例如, 您的实例 IP 地址为 123.123.123.123, 正常服务的域名为 www.abc.com , 恶意用户使用其他的域名 www.fake.com , 指向 123.123.123.123, 此时客户端访问 www.fake.com 时会出现您的网站内容.
通过 Apache 的虚拟主机可以变通的解决这个问题. 以如下场景为例:
Apache 版本号 | ECS 实例上的网站 |
---|---|
2.2.15 |
打开 Apache 的实际配置文件, 如执行命令 vi /etc/httpd/conf/httpd.conf 打开 CentOS 的 Apache 配置文件, 加入以下内容:
加入代码 NameVirtualHost *:80, 告知 Apache 使用基于 host 名的虚拟主机功能:
加入以下代码.
- <ViretualHost *:80>
- DocumentRoot /var/www/HTML/error/ ServerName * ErrorLog logs/dummy-host.example.com-error_log
- CustomeLog logs/dummy-host.example.com-access_log common
- </ViretualHost>
注意: 当客户端携带的 host 名不在之后设置的网站域名内时, 会指向一个 403 错误页面告知用户域名非法, 其中 DocumentRoot 是放置错误提示页面的目录, 在下面可以放置一个简单的 HTML 页面提示用户正在访问非法域名.
加入以下代码.
- <VirtualHost *:80>
- ServerAdmin p1@huigher.cn DocumentRoot /var/www/HTML/another/ ServerName
- p1.huigher.cn ErrorLog logs/p1.huigher.cn-error_loh CustomLog logs/p1.huigher.cn-access_log
- common
- </VirtualHost>
- <VirtualHost *:80>
- ServerAdmin t1@huigher.cn DocumentRoot /var/www/HTML/ ServerName t1.huigher.cn
- ErrorLog logs/t1.huigher.cn-error_loh CustomLog logs/t1.huigher.cn-access_log
- common
- </VirtualHost>
注意: 这一步告知 Apache 合法的网站主机头, 您需要根据实际情况修改这个代码块内容, 如示例中的 p1.huigher.cn 和 t1.huigher.cn.
执行命令 /etc/httpd/bin/apachectl restart 重启 Apache 服务.
若您希望其他域名访问您的网站时直接返回 403 错误:
修改第二步中的代码为以下形式:
- <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>
执行命令 /etc/httpd/bin/apachectl restart 重启 Apache 服务.
来源: https://yq.aliyun.com/articles/679968