一、开启apache虚拟主机

编辑httpd.conf配置文件

   vim /usr/local/apache2/conf/httpd.conf

         找到# Virtual hosts

         #Include conf/extra/httpd-vhosts.conf  此行注释去掉

编辑虚拟主机文件

   vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

        找到:

        <VirtualHost *:80>

        ServerAdmin webmaster@dummy-host.example.com

        #管理员邮箱此行可注释掉

        DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"

        #修改为网站根目录

        #如网站位置在/data/www/index.html 则该行命令修改为:

        #DocumentRoot "/data/www/index.html"

        ServerName dummy-host.example.com

        #主域名,主域名可增加多条

        ServerAlias www.dummy-host.example.com

        #次域名

        ErrorLog "logs/dummy-host.example.com-error_log"

        #错误日志存放位置

        CustomLog "logs/dummy-host.example.com-access_log" common

        #访问成功日志存放位置

        </VirtualHost>

PS:若配置好虚拟主机,出现无法访问,请修改httpd.conf

    vim /usr/local/apache2/conf/httpd.conf         

  <Directory />                  修       <Directory />

    Options FollowSymLinks                  Options FollowSymLinks

    AllowOverride None          改          AllowOverride None

    Order deny,allow                         Order deny,allow

    Deny from all                为          Allow from all

  </Directory>                            </Directory>

 

 

二、页面认证

增加验证安全,修改虚拟主机配置文件httpd-vhosts.conf<VirtualHost *:80>虚拟主机模块里面加入以下代码admin.php为例

      <filesmatch admin.php>    #表示当访问此目录此页面时需要验证密码

         AllowOverride AuthConfig

         AuthName www        #此处引号内容为自定义

          AuthType Basic

           AuthUserFile /data/www/.htpasswd     

           #这里的/data/www/.htpasswd 可随便写一个路径或名字,没有限制

          require valid-user
      </filesmatch>   #filesmatch用于单个文件,Directory用于目录

 #若改成<Directory /data/www></Directory>表示当访问该目录都需要密码验证。

 

创建apache的验证用户

    /usr/local/apache2/bin/htpasswd -c –/data/www/.htpasswd  liang #创建liang用户,以md5方式加密,再添加用户时不需要-c参数。

重新加载配置文档

/usr/local/apache2/bin/apachectl graceful     #直接重新加载不需要restart

 

三、域名跳转

增加验证安全,修改httpd-vhosts.conf配置文件,<VirtualHost *:80></VirtualHost>里面加入以下代码:

       <IfModule mod_rewrite.c>

          RewriteEngine on 

          #多个域名跳转则加入:

          # RewriteCond %{HTTP_HOST} ^www.1chuangshe.com$ [OR]

          RewriteCond %{HTTP_HOST} ^www.1chuangshe.com$     

          RewriteRule ^/(.*)$ http://www.yichuangshe.net/$1 [R=301,L]    

          #重定向到此域名(301表示永久重定向,last结束符

    </IfModule> 

 

四、日志配置

增加验证安全,修改虚拟主机配置文件httpd-vhosts.conf<VirtualHost *:80></VirtualHost>模块里面的ErrorLog以及CustomLog修改成以下代码:   

         ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/discuz-error_%Y%m%d.log 86400"

         SetEnvIf Request_URI ".*\.gif$" p_w_picpath-request

         SetEnvIf Request_URI ".*\.jpg$" p_w_picpath-request

         SetEnvIf Request_URI ".*\.png$" p_w_picpath-request

         SetEnvIf Request_URI ".*\.bmp$" p_w_picpath-request

         SetEnvIf Request_URI ".*\.swf$" p_w_picpath-request

         SetEnvIf Request_URI ".*\.js$" p_w_picpath-request

         SetEnvIf Request_URI ".*\.css$" p_w_picpath-request

      CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/discuz-access_%Y%m%d.log 86400" combined env=!p_w_picpath-request

  以上配置表示,错误以及正确日志每天归档一次,日志不记录图片访问相关信息

 

五、配置静态文件缓存(节点存储时效)

修改httpd.conf文件,(可以缓存全局环境,若修改在httpd-vhosts.conf只在该虚拟机生效),一般修改在全局配置文件httpd.conf加入以下代码:

    <IfModule mod_expires.c>

       ExpiresActive on

       ExpiresByType p_w_picpath/gif "access plus 1 days"

       ExpiresByType p_w_picpath/jpeg "access plus 24 hours"

       ExpiresByType p_w_picpath/png "access plus 24 hours"

       ExpiresByType text/css "now plus 2 hours"

       ExpiresByType application/x-javascript "now plus 2 hours"

       ExpiresByType application/x-shockwave-flash "now plus 2 hours"

       ExpiresDefault "now plus 0 min"

    </IfModule>

 

六、设置防盗链(防止服务器成为他人存储)

修改全局配置文件httpd.conf

  SetEnvIfNoCase Referer "^http://.*\.lc-pb\.com" local_ref

  SetEnvIfNoCase Referer "^www\.lc-pb\.com" local_ref

  <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png|css)">

   Order Allow,Deny 

   Allow from env=local_ref 

   Deny from env!=local_ref

 </filesmatch>

七、访问控制

控制该目录访问访问

    <Directory /data/www/install>     #定义/data/www/install目录按规则操作 

       Order Deny,Allow            #规则顺序,先执行Deny后执行Allow  

       Deny from all                #拒绝所有访问

       Allow from 127.0.0.1          #允许127.0.0.1访问

    </Directory>         

控制该文件访问控制                   

      <filesmatch "(.*)admin(.*)">   #定义根目录下含有admin字符按规则操作

          Order Deny,Allow        #规则顺序,先执行Deny后执行Allow  

          Deny from all           #拒绝所有访问含有admin关键字的文件

          Allow from 127.0.0.1    #允许自己访问含有admin关键字的文件

      </filesmatch>

控制该目录下的该文件访问控制

    <Directory /data/www/>        #定义/data/www目录访问规则 

        <filesmatch "(.*)admin(.*)">

          Order Deny,Allow        #规则顺序,先执行Deny后执行Allow  

          Deny from all           #拒绝所有访问

          Allow from 127.0.0.1          #允许自己访问

        </filesmatch>

</Directory>

 

八、 禁止目录下解析PHP(针对某些上传页面做的安全设置,使用apache

     <Directory /data/www/data>

php_admin_flag engine off    ##禁止解析 php 的控制语句

<filesmatch "(.*)php">

Order deny,allow

Deny from all

</filesmatch>

     </Directory>

 

九、通过rewrite 限制某个目录和限制user_agent(即用户代理,不仅表示浏览器标识还包括搜索引擎)

    <IfModule mod_rewrite.c>

       RewriteEngine on

       RewriteCond %{REQUEST_URI} ^.*/tmp/* [NC,OR]

       RewriteCond %{HTTP_USER_AGENT} ^*Firefox/4.0* [NC,OR]

       RewriteCond %{HTTP_USER_AGENT} ^*Baiduspider/2.0*  [NC]

       RewriteRule .* - [F]    

    </IfModule>

  ##限制了/tmp目录访问,并把火狐浏览器以及百度引擎RewriteRule .* - [F]直接禁止访问

 

十、扩展模块安装(以PHP为例子,该方法适用于apachenginx服务等)

    当编译安装时缺少没一个模块(即选项)时,可用一下方法

    需要安装yum install y autoconf

下载mencache源码包,并解压,进入解压后的源码包目录;

加载编译文件

  /usr/local/php/bin/phpize    ##此路径为PHP已安装的路径

  ./configure with-php-config=/usr/local/php/bin/php-config

  make

  make install

  cp modules/memcache.so /usr/local/php/ext

修改php.ini文件,在最后加上extension = memcache.so

    vim /usr/local/php/etc/php.ini

重新加载apachel服务,然后检验是否加载成功:

/usr/local/apache2/bin/apachectl graceful

查看加载模块

   /usr/local/php/bin/php m

   ##memcache则表示成功。