Apche配置1-6
1.默认虚拟主机
编辑httpd.conf搜索httpd-vhosts,去掉#号
# vi /usr/local/apache2.4/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf
vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/abc.com"
ServerName abc.com
ServerAlias www.abc.com aaa.com
ErrorLog "logs/abc.com-error_log"
CustomLog "logs/abc.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/usr/local/apache2.4/docs/111.com"
ServerName 111.com
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>
其中
//ServerAdmin指定管理员邮箱,
//DocumentRoot为该虚拟主机站点的根目录,
//ServaerName为网站的域名
//ServerAlias为网站的第二域名
//ErrorLog为站点的错误日志
//CustomLog为站点的访问日志
# cd /usr/local/apache2.4/
# mkdir docs
# cd docs
# mkdir abc.com
# vi abc.com/index.html
abc.com
# mkdir 111.com
# vi 111.com/index.html
111.com
检查配置文件是否有错误
# /usr/local/apache2.4/bin/apachectl -t
graceful用于修改了配置文件后进行重新读取配置文件。
# /usr/local/apache2.4/bin/apachectl graceful
(3)配置验证
# curl -xlocalhost:80 www.abc.com
abc.com
# curl -xlocalhost:80 www.aaa.com
abc.com
# curl -xlocalhost:80 111.com
111.com

2.用户认证
1.用户认证用来对某些目录中的网页进行访问控制,当用户访问这些页面的时候需要输入用户名和密码进行认证。
2. 配置:
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/abc.com"
ServerName abc.com
ServerAlias www.abc.com aaa.com
<Directory /usr/local/apache2.4/docs/abc.com>
AllowOverride AuthConfig
AuthName "abc.com user auth"
AuthType Basic
AuthUserFile /usr/local/apache2.4/docs/.htpasswd
require valid-user
</Directory>
ErrorLog "logs/abc.com-error_log"
CustomLog "logs/abc.com-access_log" common
</VirtualHost>
其中
<Directory >
// 指定认证的目录
AllowOverride AuthConfig
// 这个相当于打开认证的开关
AuthName "testdomain.com user auth"
//自定义认证的名字,作用不大
AuthType Basic
//认证的类型,一般为Basic
AuthUserFile /data/.htpasswd
//指定密码文件所在位置
require valid-user
// 指定需要认证的用户为全部可用用户
# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
# /usr/local/apache2.4/bin/apachectl graceful
# /usr/local/apache2.4/bin/htpasswd -cm /usr/local/apache2.4/docs/.htpasswd lsy
//htpasswd为创建用户的工具,-c为create
//-m为指定密码加密的方式为MD5
.htpasswd为密码文件
lsy为创建的用户
//第二次不用加,否则密码文件会重置
# curl -xlocalhost:80 -u ytl:000000 abc.com -I

(3)配置验证
配置完可在Windows上访问地址www.abc.com,文件在C:\Windows\System32\drivers\etc\hosts。打开文件在最后一行输入:
#你的Linux中的IP www.abc.com 注意: 该文件要移动到桌面上进行修改才可以
接下来,关闭防火墙,设置selinux为Permissive(宽容模式,不会实际限制 domain/type 的存取)
# systemctl stop firewalld
# setenforce 0
然后,去浏览器访问www.abc.com会有弹窗出现。
(4)验证成功

3域名跳转
(1)介绍
当我们变更网站域名或者申多个域名指向一个网站的时候,这个时候我们就会用到域名跳转。
(2)配
设置不是以111.com开头的网站都跳转到111.com上。
置
配置
设置不是以111.com开头的网站都跳转到111.com上。
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
<IfModule mod_rewrite.c>//- 需要mod_ _rewrite模块
RewriteEngine on// 打开rewrite功能
RewriteCond %{HTTP_HOST} !^111.com$//定义rewrite的条件,当主机名不是111.com时满足条件
RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]//定义rewrite规则,RewriteRule后面分为三个部分,第一部分为当前网址
//第二部分为要跳转的网址,第三部分是选项,需要括号括起来。
</IfModule>
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>
创建文件
# cd /usr/local/apache2.4/docs
# mkdir www.111.com
# cd www.111.com/
# vim index.html
www.111.com
# vim 123.php
<?php
echo "www.111.com/123.php"
?>
# /usr/local/apache2.4/bin/apachectl -t

# /usr/local/apache2.4/bin/apachectl graceful
要实现跳转,需要rewrite模块的支持,所以查看是否安装该模块。如果没有则还需要一些配置:
# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
如果不存在修改配置文件
# vi /usr/local/apache2.4/conf/httpd.conf
去掉LoadModule rewrite_module modules/mod_rewrite.so的注释

# /usr/local/apache2.4/bin/apachectl -t
Syntax OK

# /usr/local/apache2.4/bin/apachectl graceful
# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
(3)配置验证
# curl -xlocalhost:80 2111.com.cn -I
//可以看见状态码301, 跳转的网址是111.com

4.访问日志
1)介绍
访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问题。
(2)配置
# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
(3)配置验证
# curl -xlocalhost:80 2111.com.cn -I
#tail /usr/local/apache2.4/logs/111.com-access_log
、
5.访问日志不记录静态文件
1. 配置
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>
上传图片文件到image中
# cd /usr/local/apache2.4/docs/www.111.com/
# mkdir image
# ll image/linux.jpg

检查配置信息
# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
# /usr/local/apache2.4/bin/apachectl graceful
# curl -xlocalhost:80 www.111.com/image/linux.jpg -I

查看日志
# tail -f /usr/local/apache2.4/logs/111.com-access_log

打开网页访问111.com/image/linux.jpg

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
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
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" combined env=!image-request
</VirtualHost>
//先定义了一个image-request环境变量,把gif,jpg,png, bmp,swf,js,css等格式文件全归类到此,env=!image-request表示日志记录不为image-request中表示的静态文件。
保存配置后,测试配置文件是否正确,没有错误重新加载服务:
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
(2)配置验证
# curl -xlocalhost:80 www.111.com/image/linux.jpg -I
另打开一个窗口,查看日志,关于jpg格式的没有访问日志信息
# tailf ../../logs/111.com-access_log
访问成功
6.访问日志切割
日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件
(1)配置
(1)配置
# vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
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
ErrorLog "logs/111.com-error_log"
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.1og 86400" combined env=!image-request
</VirtualHost>
rotatelogs为apache的日志切割工具,-l表示以当前系统时间进行切割,logs/123.com-access_%Y%m%d.1og定义了日志的切割名称,86400以天为单位,换算成秒就是86400。
保存配置后,测试配置文件是否正确,没有错误重新加载服务:
/usr/local/apache2.4/bin/apachectl -t
Syntax OK

#/usr/local/apache2.4/bin/apachectl graceful
(2)配置验证
# curl -xlocalhost:80 www.111.com -I‘

验证成功
# ll /usr/local/apache2.4/logs/


浙公网安备 33010602011771号