Nginx 服务绑定域名

https://help.aliyun.com/knowledge_detail/41091.html?spm=a2c4e.11155515.0.0.4lvCpF

以 YUM 安装的 Nginx 为例:

  1. 执行命令 vi /etc/nginx/nginx.conf 编辑 Nginx 的配置文件,将默认的server {...} 配置修改为以下内容:
1. {
2. 80;
3. .123.com;
4. /home/web1;
5. 6. /{
7. }
8. 9. 404/404.html;
10. =/40x.html {
11. }
12. 13. 500502503504/50.xhtml;
14. =/50x.html {
15. }
16. }
17. 18. {
19. .abc.com;
20. /home/web2;
21. 22. /{
23. }
24. 25. 404/404.html;
26. =/40x.html {
27. }
28. 29. 500502503504/50x.html;
30. =/50x.html {
31. }
32. }
  • 访问 www.123.com 时,跳转到 /home/web1 目录。
  • 访问 www.abc.com 时,跳转到 /home/web2 目录。
  1. 执行命令 nginx -s reload 重启 Nginx 服务。

Tomcat 服务绑定域名

  1. 执行命令 vi /etc/TOMCAT_HOME/conf/server.xml编辑 Tomcat 配置文件。

将上述内容修改为:

1. <Hostname="localhost"appBase="webapps"unpackWARs="true"autoPlay="true">
2. <ValueclassName="org.apache.catalina.valves.AccessLogValue"directory="logs"prefix="localhost_access_log."suffix=".txt"pattern="%h %l %u %c "%r" %s %b"/>
3. </Host>
4. 5. <Hostname="120.76.210.250"appBase="/data/wwwroot/web"unpackWARs="true"autoPlay="true">
6. <Contentpath=""docBase="/data/wwwroot/web"debug="0"reloadable="false"crossContext="true"/>
7. <ValueclassName="org.apache.catalina.valves.AccessLogValue"directory="logs"prefix="120.76.210.250_access_log."suffix=".txt"pattern="%h %l %u %c "%r" %s %b"/>
8. </Host>
9. 10. <Hostname="www.abc.com"appBase="/data/wwwroot/default"unpackWARs="true"autoPlay="true">
11. <Contentpath=""docBase="/data/wwwroot/default"debug="0"reloadable="false"crossContext="true"/>
12. <ValueclassName="org.apache.catalina.valves.AccessLogValue"directory="logs"prefix="www.abc.com_access_log."suffix=".txt"pattern="%h %l %u %c "%r" %s %b"/>
13. </Host>
  • 访问 www.abc.com 时,默认跳转到 /data/wwwroot/default 目录。
  • 访问 120.76.210.250 时,默认跳转到 /data/wwwroot/web 目录。
  1. 运行 bin/shutdown 关闭 Tomcat 服务,再运行 bin/startup 重启 Tomcat 服务。

Apache 服务绑定域名

以一键安装包配置的 Apache 环境为例:

  1. 执行命令 cd /alidata/server/httpd/conf/vhosts/ 进入站点配置文件目录。
  2. 执行命令 vi aa.conf 新建一个配置文件,按下键盘上的字母 “I” 键,复制并粘贴以下内容:
  1. Order,deny
  2. Deny from all
  3. DocumentRoot/alidata/www/test
  4. ServerName.test.com
  5. ServerAlias.com
  6. ErrorLog"/alidata/log/httpd/test-error.log"
  7. CustomLog"/alidata/log/httpd/test.log"

注意:您需要修改对应的日志名字以区分不同网站的日志信息。

  1. 执行命令 /alidata/server/httpd/bin/apachectl restart 重启 Apache 服务。

Apache 服务配置实现多域名跳转

假设程序目录为 /var/www/html,网站目录结构如下:

云服务器ECS内部的iptables规则怎么添加规则_运维

  1. 开启 Apache 的虚拟主机功能,配置对应的虚拟主机到对应的目录即可。

云服务器ECS内部的iptables规则怎么添加规则_java_02

实现效果

  • 使用 a.example.com 访问时,实际是访问 /var/www/html/a 目录。
  • 使用 b.example.com 访问时,实际是访问 /var/www/html/b 目录。
  • 使用 c.example.com 访问时,实际是访问 /var/www/html/c 目录。

Apache 服务配置二级域名

前提条件:您有一个泛域名解析的顶级域名,例如: aliyun.com 。

  1. 在 httpd.conf 中打开 mod_rewrite 模块;
  2. 在 httpd.conf 的最后,添加以下内容:
  1. RewriteEngine on
  2. RewriteMap:tolower
  3. RewriteMap:/usr/local/etc/apache/vhost.map
  4. RewriteCond${lowercase:%{SERVER_NAME}}^(.+)$
  5. RewriteCond${vhost:%1}^(/.*)$
  6. RewriteRule^/(.*)$ %1/$1

注意:/usr/local/etc/apache 是 Apache 服务配置文件所在路径,您需要根据实际情况修改。

  1. 执行命令 vi vhost.map 新建文件,复制并粘贴以下内容:
  1. .aliyun.com /usr/local/www/data-dist/aliyun
  2. .aliyun.com /usr/local/www/data-dist/aliyunbbs
  3. .aliyun.com /usr/local/www/data-dist/anyname

注意:请注意保持域名+空格+绝对路径的格式。

  1. 在根目录 /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

http://t1.huigher.cn/http://p1.huigher.cn/

  1. 打开 Apache 的实际配置文件,如执行命令 vi /etc/httpd/conf/httpd.conf 打开 CentOS 的 Apache 配置文件,加入以下内容:
  1. 加入代码 NameVirtualHost *:80,告知 Apache 使用基于 host 名的虚拟主机功能:
  2. 加入以下代码。
1. <ViretualHost:80>
2.  DocumentRoot /var/www/html/error/
3.  ServerName *
4.  ErrorLog logs/dummy-host.example.com-error_log
5.  CustomeLog logs/dummy-host.example.com-access_log common
6. </ViretualHost>

注意:当客户端携带的 host 名不在之后设置的网站域名内时,会指向一个 403 错误页面告知用户域名非法,其中 DocumentRoot 是放置错误提示页面的目录,在下面可以放置一个简单的 html 页面提示用户正在访问非法域名。

  1. 加入以下代码。
1. <VirtualHost:80>
2.  ServerAdmin p1@huigher.cn
3.  DocumentRoot /var/www/html/another/
4.  ServerName p1.huigher.cn
5.  ErrorLog logs/p1.huigher.cn-error_loh
6.  CustomLog logs/p1.huigher.cn-access_log common
7. </VirtualHost>
8. <VirtualHost:80>
9.  ServerAdmin t1@huigher.cn
10.  DocumentRoot /var/www/html/
11.  ServerName t1.huigher.cn
12.  ErrorLog logs/t1.huigher.cn-error_loh
13.  CustomLog logs/t1.huigher.cn-access_log common
14. </VirtualHost>

注意:这一步告知 Apache 合法的网站主机头,您需要根据实际情况修改这个代码块内容,如示例中的 p1.huigher.cn 和 t1.huigher.cn。

  1. 执行命令 /etc/httpd/bin/apachectl restart 重启 Apache 服务。

若您希望其他域名访问您的网站时直接返回 403 错误:

  1. 修改第二步中的代码为以下形式:
1. <VirtualHost:80>
2.  DucumentRoot /var/www/html/error/
3.  ServerName *
4. <Location>
5.  Order Allow, Deny
6.  Deny from all
7. </Location>
8.  ErrorLog logs/dummy-host.example.com-error_log
9.  CustomLog logs/dummy-host.example.com-access_log commom
10. </VirtualHost>
  1. 执行命令 /etc/httpd/bin/apachectl restart 重启 Apache 服务。