zoukankan      html  css  js  c++  java
  • Apache对域名的泛解析方法集锦

    在apache下建立多个站点 
    在httpd.conf中使用如下内容 
    
    NameVirtualHost 211.161.197.119 
    
    <VirtualHost 211.161.197.119> 
         ServerName bug.54ncr.com 
         DocumentRoot /www/http/mantisbt 
    </VirtualHost> 
    <VirtualHost 211.161.197.119> 
         ServerName mycity.54ncr.com 
         DocumentRoot /www/http/billing_system 
    </VirtualHost>
    =================================================================

    ServerAlias:服务器别名,在Apache中可以用于设置虚拟主机接收到个域名,也可以用于接收泛解析的域名。具体的设置方法如下:

    一、用于设置虚拟主机接收多个域名

    一个虚拟主机常常会接收多个域名解析,比如:一个虚拟主机要同时介绍fke.la54ncr.com两个域名,或者是两个二级域名,如:www.fke.la, www1.fke.la,对于这种情况,可以在用ServerAlias轻松做到,打开apache的设置文件:httpd.conf,在该主 机的设置代码中:

    <VirtualHost 192.168.1.12>

    ServerName “fke.la” #默认域名;

    ServerAlias 54ncr.com www1.fke.la #不同域名用空格隔开;

    DocumentRoot “D:\wwwroot\fke.la

    <Directory “D:\wwwroot\fke.la”>

    Options Indexes FollowSymLinks

    AllowOverride all

    </Directory>

    </VirtualHost>

    保存httpd.conf文件,重启apche即可生效。

    二、 用于接收泛域名解析

    一个虚拟主机是可以接收泛域名解析的,也是通过SeverAlias选项设置,通过设置该选项不仅可以接收二级泛域名解析,也可以接收三级、四级泛 域名解析,具体设置如下:

    <VirtualHost 192.168.1.12>

    ServerName “fke.la” #默认域名;

    ServerAlias *.fke.la #用*表示泛域名,如果要接收三级泛域名解析,可以写成这样:*.my.fke.la;

    DocumentRoot “D:\wwwroot\fke.la”

    <Directory “D:\wwwroot\fke.la”>

    Options Indexes FollowSymLinks

    AllowOverride all

    </Directory>

    </VirtualHost>

    保存httpd.conf文件,重启apche即可生效。


    =================================================================
    在DNS服务器上添加一条A记录。其中,“主机名”填写“*” ,“指向”填写为自己网站的服务器IP。这样所有
    *.yourdomain.cn 都指向自己网站的服务器IP 所以不管你申请什么名字,如:dlzok.yourdomain.cn 都解析到这个IP上。最主要的是apache的配置了。
    将所有的虚拟主机段先删除,加入
    ServerName local
    ServerAlias *
    UseCanonicalName OFF
    VirtualDocumentRoot D:/www/%1
    ServerName在这里不起作用,ServerAlias会将域名解析到D:/www下对应的目录,这样就不用每次都修改httpd.conf文件 了。
    需要注意的是使用VirtualDocumentRoot指令需要加载mod_vhost_alias模块,
    去掉包含mod_vhost_alias行对应的LoadModule和AddModule前面的"#",restart一下apache就OK了
    试了一下,果然很爽,可以使用
    VirtualDocumentRoot /www/%2+
    来实现泛解析,不过不管什么二级域名都被解析到根目录了,也就是说
    *.yourdomain.com 会被指向 /www/yourdomain.com
    为了解决这个问题,可以用
    VirtualDocumentRoot /www/%2+/%0
    来实现二级域名分目录,即
    www.yourdomain.com 会被指向 /www/yourdomain.com/www.yourdomain.com
    test1.yourdomain.com 会被指向 /www/yourdomain.com/test1.yourdomain.com
    test2.yourdomain.com 会被指向 /www/yourdomain.com/test2.yourdomain.com
    有点不足,这样,www.yourdomain.com 也需要在yourdomain.com目录下再建一个目录了,要是www能到根目录,其他二级域名到二级目录就好了,不过也好,这样规范点。
    主要是以下这2句,再也不用一个个绑域名了,只需要建立对应域名的目录
    UseCanonicalName Off
    VirtualDocumentRoot /www/%2+/%0
    ==============================================================
    一、使用 mod_vhost_alias
    1. 简单的动态虚拟主机
    # 从 Host: 头中取得服务器名字 Server Name
    UseCanonicalName Off
    # 这里的日志格式,可以在将来通过第一个参数域来分隔不同的虚拟主机的日志
    LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
    CustomLog logs/access_log vcommon
    # 在返回请求的文件名的路径中包含进服务器名字: server name
    VirtualDocumentRoot /www/hosts/%0/docs
    VirtualScriptAlias /www/hosts/%0/cgi-bin
    2. 更为有效的基于 IP 地址的虚拟主机
    # 从 IP 地址反解析得到服务器名字(server name)
    UseCanonicalName DNS
    # 在日志中包含 IP 地址,便于后续分发
    LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon
    CustomLog logs/access_log vcommon
    # 在文件路径中包含 IP 地址
    VirtualDocumentRootIP /www/hosts/%0/docs
    VirtualScriptAliasIP /www/hosts/%0/cgi-bin
    二、使用 mod_rewrite
    1. 使用 mod_rewrite 实现简单的动态虚拟主机
    # 从 Host: 头获取服务器名字
    UseCanonicalName Off
    # 可分割的日志
    LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon
    CustomLog logs/access_log vcommon
    # ExecCGI is needed here because we can't force
    # CGI execution in the way that ScriptAlias does
    Options FollowSymLinks ExecCGI
    # 接下来是关键部分
    RewriteEngine On
    # a ServerName derived from a Host: header may be any case at all RewriteMap lowercase int:tolower
    ## 首先处理普通文档:
    # 允许变名 /icons/ 起作用 - 其他变名类同
    RewriteCond %{REQUEST_URI} !^/icons/
    # 允许 CGIs
    RewriteCond %{REQUEST_URI} !^/cgi-bin/
    # 开始“变戏法”
    RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/docs/$1
    ## 现在处理 CGIs - 我们需要强制使用一个 MIME 类型
    RewriteCond %{REQUEST_URI} ^/cgi-bin/
    RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/cgi-bin/$1 [T=application/x-httpd-cgi]
    # 好了!
    2. 使用独立的虚拟主机配置文件 vhost.map
    vhost.map 文件包含了类似下面的内容:
    www.customer-1.com /www/customers/1
    www.customer-2.com /www/customers/2
    # ...
    www.customer-N.com /www/customers/N
    http.conf 包含了:
    RewriteEngine on
    RewriteMap lowercase int:tolower
    # 定义映像文件
    RewriteMap vhost txt:/www/conf/vhost.map
    # 和上面的例子一样,处理变名
    RewriteCond %{REQUEST_URI} !^/icons/
    RewriteCond %{REQUEST_URI} !^/cgi-bin/
    RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
    # 这里做基于文件的重新映射
    RewriteCond ${vhost:%1} ^(/.*)$
    RewriteRule ^/(.*)$ %1/docs/$1
    RewriteCond %{REQUEST_URI} ^/cgi-bin/
    RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
    RewriteCond ${vhost:%1} ^(/.*)$
    RewriteRule ^/(.*)$ %1/cgi-bin/$1
  • 相关阅读:
    马氏距离的深入理解
    Mahalanobis Distance(马氏距离)
    Weka EM 协方差
    数据挖掘、概率分析与决策支持
    二、 Android中gravity与layout_gravity的区别
    一、 Android完全退出应用程序
    python configparse
    时间戳与时间互转
    python argparse
    时间插件
  • 原文地址:https://www.cnblogs.com/beyondhjjyt/p/3332569.html
Copyright © 2011-2022 走看看