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/

 

 

posted @ 2021-03-10 19:53  梦碎暨梦碎  阅读(51)  评论(0)    收藏  举报