apache虚拟主机配置文件详解

回复 收藏
本帖最后由 soul 于 2016-2-2 19:11 编辑

内容都是今天复习期间整理出来的,供新入门的同学参考(懂的同学略过就可以了),有不对的地方希望指正。
正文:  会在1楼给出整个的配置,要用的直接拷贝走自己改改就可以。
打开apache的虚拟主机配置文件 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

配置默认虚拟主机(禁止直接用IP访问)需单独配置一个位置。
  此配置默认在一个同端口的正确配置文件的上面
    DocumentRoot "/tmp/123"   这里配置的路径是空的,记得配置完成后创建一个
    ServerName gasdgsdfg.com   后面的那个gasdgsdfg.com是乱打的。
   默认虚拟主机配置为的是不让别人通过IP来访问网站。
主配置开头
    <--  一个虚拟主机的配置开头。后面的80是端口。
    主配置(定义域名/网站的文件路径/包括日志文件路径)   
    DocumentRoot "/data/www/"   这里的路径为网站的根目录
    ServerName  www.test.com    主域名
    ServerAlias  www.dddd.com   域名别名
    ErrorLog "logs/test.com-error_log"   错误日志
    SetEnvIf Request_URI ".*\.gif$" aaaaaa    这里几行绿色的是指定日志不记录的文件类型,后面的6个a是别名将在后面调用。
    SetEnvIf Request_URI ".*\.jpg$" aaaaaa
    SetEnvIf Request_URI ".*\.png$" aaaaaa
    SetEnvIf Request_URI ".*\.bmp$" aaaaaa
    SetEnvIf Request_URI ".*\.swf$" aaaaaa
    SetEnvIf Request_URI ".*\.js$" aaaaaa
    SetEnvIf Request_URI ".*\.css$" aaaaaa 这里的aaaaaa在日志切割的尾部以绿色的底标注。已经被启用,意思是不记录此类文件。

##下一列是加了日志切割的功能的访问日志。
    CustomLog "|/usr/lcoal/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" combined   env =!aaaaaa  绿色是指定前面的不记录文件类型   这行配置的红色字体可以是common也可以是combined  相对用combined比较好点因为会记录的更详细一些。  
配置静态缓存
                                                                               此处为参数开始      expires.c   这是一个让对方浏览器进行信息缓存的模块。
        ExpiresActive on                                                                                         此处为on则开启静态缓存,off则关闭。
        ExpiresByType image/gif "access plus 1 days"                                         gif 类动态图片信息 缓存1天  也是两小时。
        ExpiresByType image/jpeg "access plus 24 hours"                                  jpeg 类的图片信息 缓存24小时。
        ExpiresByType image/png "access plus 24 hours"                                  png 类的图片信息  缓存24小时。
        ExpiresByType text/css "now plus 2 hour"                                               css 类的信息 缓存2小时。
        ExpiresByType application/x-javascript "now plus 2 hours"                   此类信息缓存2小时。
        ExpiresByType application/javascript "now plus 2 hours"                      此类信息缓存2小时。
        ExpiresByType application/x-shockwave-flash "now plus 2 hours"       flash缓存2小时。
        ExpiresDefault "now plus 0 min"                                                              其他信息不缓存。
                                                                                                      此处为上列参数的结束位置,缺一参数则不完整。

301跳转      
        rewrote.c  这个模块作用于域名定向的领域
        RewriteEngine on    这里表示开启域名跳转功能on为开启off为关闭
        RewriteCond %{HTTP_HOST} ^www.aaa.com$  这里表示的是你输入这个域名将会跳转到下面那个主域名,这将是一个次域名。
        RewriteRule ^(.*)$ http://www.test.com/$1 [R=301,L]  这里是主域名,前面的^/(.*)$表示的是跳转之前那个域名的.com 后面跟的内容是没有限制的,而域名后面的$1 表示的是只能跟一个/.*不能再深入的跟。[]中括号里面的R表示的是状态 状态等于301,L  逗号后面的L表示的是结束了,跳转到这里结束。
       至此结束
       这也是301跳转,当一个网站有两个以上的自定义域名的时候用另一种方案
        RewriteEngine on     
        RewriteCond %{HTTP_HOST} !^www.tast.com$  表示 定义的域名只要不是这个的就进行跳转,不用写上很多句,只要是当前配置中存在的域名都算。
        RewriteRule ^/(.*)$ http://www.tast.com/$1 [R=301,L]
     记得结束   
这里和301调用的同一个模块,可以独立存放也可以将非重复内容加入到那个模块中去。至于在什么位置,同学们都懂的。

        RewriteEngine on

#       RewriteCond %{HTTP_USER_AGENT}  ^.*curl.* [NC,OR]     ^符号前面的内容表示定义后面的条件,后面用两个.*.*将curl包括在中间,表示curl相关的访问将被拒绝中括号里面的NC表示匹配的内容不区分大小写,OR表示还要再加一条
#       RewriteCond %{HTTP_USER_AGENT}  ^.*chrome.* [NC]     像这里没有在中括号里面加OR 就表示到这里结束了,如果要继续加禁止项则需要在总括号里面加上 ,OR  下面继续这样泡制就可以了。
#       RewriteRule .* - [F]       这里就是开始禁止
        RewriteCond %{REQUEST_URI} ^.*/tmp/.* [NC]    在这里限制的tmp目录只要是在浏览器访问的时候带上了这个目录的访问,都会被拒绝掉。用于绝密文件的存放,除了服务器上能查看到。其他的都不行。
        RewriteRule .* - [F]         这里是开始禁止

用户名认证,防止秘密文件被普通用户所访问。
   [/url]     此处路径为特殊成员可以访问的路径,里面存放一些重要的信息。
        AllowOverride AuthConfig
        AuthName "******"       这边双引号里面的内容可以随便填,作为一个提示的作用。
        AuthType Basic
        AuthUserFile /data/.htpasswd  此处可以自定义但要求是,在创建虚拟用户的时候存放密码资料的路径要和这里同步。
        require valid-user  
   
访问控制
[/url]    这里路径指向网站根目录
      AllowOverride None
      Options None
      Order allow,deny            # allow和deny的先后循序影响后面的配置哪个先生效,也是决定生成白名单还是黑名单的关键要素
      Allow from all                  #本意是允许所有,如果是白名单配置则将all换成允许的IP
      Deny from 127.0.0.1         #本意是禁止一个IP 如果是黑名单配置则将IP换成all

配置防盗链
        SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref 这里是自己网址的白名单   这里尾部的 local_ref 是定义的一个变量在这段配置的结尾处有用,定义名可以自定义,但所有白名单的定义名必须要一样
        SetEnvIfNoCase Referer ".*\.aaa\.com" local_ref 可以设置多个 如果还要再加域名将前面SetEnvIfNoCase Referer这个内容复制另起一行按上面的格式写好即可。
         这是防盗链的对应文件   
        Order Allow,Deny     选择允许或者拒绝     
        Allow from env=local_ref  将前面定义的变量 作为允许的内容填写在这      
         配置到此结束
  禁止指定目录解析PHP
    [/url]      这里最后的data表示的是网站根目录下的一个data目录,里面存放的是用户上传的一些文件的缓存信息
        php_admin_flag engine off       这里是关闭php的解析功能,但是如果不继续配置的话,网站会将php文件下载走。
                       从这里开始应该是禁止php文件的上传和下载
                Order deny,allow                在这排列先生效的顺序deny或者allow
                Deny from all                      Deny禁止所有的ip
                Allow from 127.0.0.1           允许的一个IP   这里的一个IP最好是任何网络都不能访问到的。
                                     禁止下载的配置到这里结束
                                       禁止解析的配置到这里结束


      <--  一个虚拟主机的配置结尾

2016-02-02 18:52 举报
已邀请:
0

soul

赞同来自:


    DocumentRoot "/tmp/123"
    ServerName gasdgsdfg.com




    DocumentRoot "/data/www/"
    ServerName  www.test.com
    ServerAlias  www.dddd.com
    ErrorLog "logs/test.com-error_log"
    SetEnvIf Request_URI ".*\.gif$" aaaaaa
    SetEnvIf Request_URI ".*\.jpg$" aaaaaa
    SetEnvIf Request_URI ".*\.png$" aaaaaa
    SetEnvIf Request_URI ".*\.bmp$" aaaaaa
    SetEnvIf Request_URI ".*\.swf$" aaaaaa
    SetEnvIf Request_URI ".*\.js$" aaaaaa
    SetEnvIf Request_URI ".*\.css$" aaaaaa
    CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" combined env=!aaaaaa
   
        ExpiresActive on
        ExpiresByType image/gif "access plus 1 days"
        ExpiresByType image/jpeg "access plus 24 hours"
        ExpiresByType image/png "access plus 24 hours"
        ExpiresByType text/css "now plus 2 hours"
        ExpiresByType application/x-javascript "now plus 2 hours"
        ExpiresByType application/javascript "now plus 2 hours"
        ExpiresByType application/x-shockwave-flash "now plus 2 hours"
        ExpiresDefault "now plus 0 min"
   

    SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref
    SetEnvIfNoCase Referer "^http://.*\.dddd\.com" local_ref
    SetEnvIfNoCase Referer "^http://.*\.aminglinux\.com" local_ref
   
        Order Allow,Deny
        Allow from env=local_ref
   

   
        RewriteEngine on
        RewriteCond %{HTTP_HOST} ^www.dddd.com$
        RewriteRule ^(.*)$ http://www.test.com/$1 [R=301,L]
#       RewriteCond %{HTTP_USER_AGENT} ^.*chrome.* [NC,OR]
#       RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC]
#       RewriteRule .* - [F]
        RewriteCond %{REQUEST_URI} ^.*/tmp/.* [NC]
        RewriteRule .* - [F]
   


   
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
        Deny from 127.0.0.1
   


        AllowOverride AuthConfig
        AuthName "******"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
   

0

summer123

赞同来自:

+1
0

044310

赞同来自:

很好啊

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: