一、开启apache虚拟主机
l 编辑httpd.conf配置文件
vim /usr/local/apache2/conf/httpd.conf
找到# Virtual hosts
#Include conf/extra/httpd-vhosts.conf 把此行注释去掉
l 编辑虚拟主机文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
找到:
<VirtualHost *:80>
ServerAdmin [email protected]
#管理员邮箱此行可注释掉
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>
l 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>
二、页面认证
l 增加验证安全,修改虚拟主机配置文件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>表示当访问该目录都需要密码验证。
l 创建apache的验证用户
/usr/local/apache2/bin/htpasswd -c –m /data/www/.htpasswd liang #创建liang用户,以md5方式加密,再添加用户时不需要-c参数。
l 重新加载配置文档
/usr/local/apache2/bin/apachectl graceful #直接重新加载不需要restart
三、域名跳转
l 增加验证安全,修改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>
四、日志配置
l 增加验证安全,修改虚拟主机配置文件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$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/discuz-access_%Y%m%d.log 86400" combined env=!image-request
# 以上配置表示,错误以及正确日志每天归档一次,日志不记录图片访问相关信息
五、配置静态文件缓存(节点存储时效)
l 修改httpd.conf文件,(可以缓存全局环境,若修改在httpd-vhosts.conf只在该虚拟机生效),一般修改在全局配置文件httpd.conf,加入以下代码:
<IfModule mod_expires.c>
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/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
六、设置防盗链(防止服务器成为他人存储)
l 修改全局配置文件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>
七、访问控制
l 控制该目录访问访问
<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>
l 控制该文件访问控制
<filesmatch "(.*)admin(.*)"> #定义根目录下含有admin字符按规则操作
Order Deny,Allow #规则顺序,先执行Deny后执行Allow
Deny from all #拒绝所有访问含有admin关键字的文件
Allow from 127.0.0.1 #允许自己访问含有admin关键字的文件
</filesmatch>
l 控制该目录下的该文件访问控制
<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为例子,该方法适用于apache、nginx服务等)
当编译安装时缺少没一个模块(即选项)时,可用一下方法
需要安装yum install –y autoconf
l 下载mencache源码包,并解压,进入解压后的源码包目录;
l 加载编译文件
/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
l 修改php.ini文件,在最后加上extension = memcache.so
vim /usr/local/php/etc/php.ini
l 重新加载apachel服务,然后检验是否加载成功:
/usr/local/apache2/bin/apachectl graceful
l 查看加载模块
/usr/local/php/bin/php –m
##有memcache则表示成功。