5.9LAMP-Apache默认虚拟主机及用户认证和访问日志、域名跳转、日志切割、静态元素过期时间、日志不记录静态文件...

 

5月9日任务:
11.16/11.17 Apache默认虚拟主机
11.18 Apache用户认证
11.19/11.20 域名跳转
11.21 Apache访问日志
11.22 访问日志不记录静态文件
11.23 访问日志切割
11.24 静态元素过期时间

apache2编译安装的另外一种方法:

 

下载apr-1.6、apr-util-1.6以及httpd-2.4,分别解压三个源码包
把apr-1.6.3 放到httpd源码包的/srclib/下,改名apr
把apr-util-1.6.1 放到httpd源码包的/srclib/下,改名apr-util4)编译参数./configure --prefix=/dir/ --enable-so --enable-mpms-shared=all --with-mpm=event --enable-mods-shared=most --with-included-apr
说明:这里的/dir/为apache安装路径,根据需求定目录

apache的一些学习文档: https://github.com/aminglinux/apache

 

一、Apache默认虚拟主机

一台服务器可以访问多个网站,每个网站都是一个虚拟主机

概念:域名(主机名)、DNS、解析域名、hosts  

任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机

1. windows下host用法

第一步:按下图找到host文件

94c055feddbbd5242ff8bbf40290a5353d0.jpg

第二步:按下图添加域名;

c671929184f08fa52366cda3c57cf38bac2.jpg

第三步:ping 设置的域名是否通畅;

59efd23c230755cd6a92de0044c544ed90a.jpg

第四步:在浏览器访问域名

21d7aeeacb5b7979edd9215b6df60b44414.jpg

254863a6e9cb408f5ce9cdebc78d615a19f.jpg

2. linux下配置虚拟主机

当虚拟主机配置文件生效后,主配置文件中所定义的DocumentRoot会失效

虚拟主机配置文件一旦打开,可以定义多个VirtualHost,每个VirtualHost代表一个站点,都代表一个虚拟主机

 

第一步:编辑配置文件httpd.conf,去掉以下的#号,使虚拟主机的配置文件生效

去掉#号 加载虚拟主机的配置文件

0fb50802780da052dc4e8eca2be0b4e40b9.jpg

 

第二步:进入虚拟主机配置文件中;

 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf              httpd-vhosts.conf虚拟主机配置文件

//改为如下

8042973c5609a96d9e609656a0b54077955.jpg

第三步: 创建和虚拟主机对应的站点根目录,以及新建相应index.php

f9323eae4be050e53ca98880e2fc4917d49.jpg

并在对应站点下创建index.php

39f3eb85c11a922c6a65e2aa502fa0d635a.jpg

usr/local/apache2.4/bin/apachectl -t //需要检查配置语法

/usr/local/apache2.4/bin/apachectl graceful //加载

815be8b6c5b3a596ae49fae39c7083fdc06.jpg

第四步:ping 设置的www.abc.com,此时明显是外网的域名;

1281346a51ca1f9c4ea2037c89798ca2ed1.jpg

vi /etc/hosts        hosts文件,访问本机上的abc.com可以编辑hosts文件,还可以使用curl

9ade12b7285dad9d6623b66f0bca37df90d.jpg

第五步:用 curl -x192.168.37.3:80 abc.com 来测试

不论把什么域名指向过来都会访问到abc.com,abc.com是虚拟主机配置文件中配置的第一个虚拟主机,它就是默认虚拟主机,无论访问什么域名,只要解析到这个ip上都会访问该网站对应的虚拟主机配置

171befa5fc883e515cbad11a08f24d6baca.jpg

二、Apache用户认证

1.全局用户认证

在虚拟主机配置文件 httpd-vhosts.conf ,配置另一台虚拟主机信息

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

以下是配置文件中,第二个虚拟主机的配置:

83bbf382fe7126caa43f5e67a967c1eebeb.jpg

创建密码htpasswd命令
在创建密码文件前先要了解htpasswd命令: htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。

/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd tobe

c是creat,创建的意思;

m是md5加密

指定密码文件错在位置  /data/.htpasswd 

tobe  用户名

95ae30471275b90e72236bf95361f17a74d.jpg

再增加一个用户,就不用再添加-c;注意:如果继续用 -c ,那么就会把之前的用户名覆盖;

3b1cbab5b733755081d827885a7db21a9d3.jpg

连接测试此虚拟,

/usr/local/apache2.4/bin/apachectl -t //更改配置后,需要检查配置语法

/usr/local/apache2.4/bin/apachectl graceful //需要加载

 curl -x127.0.0.1:80 111.com            401报错

6137b24947fe93fee6fe5228aa143b1d0ba.jpg

curl命令的 -I 参数,显示 http response 的头信息,此时需要用户认证

c5e52dad2c9e6c879a9074ad6b4b530167b.jpg

浏览器中访问,需要在windows中的hosts中设置,需要输入用户名密码验证

377f99933c45f2d94136a3adf1365fa3555.jpg

a04cc9295b6dc0f3e8a421f0919bbbbcc56.jpg

访问成功

f6d9059da430b22128e27879e696bbfdb82.jpg

使用curl输入用户名和密码

curl命令的 -u 参数,可以登录用户名,及密码;

curl -x127.0.0.1:80 -utobe:tobe 111.com -I   此处用户名和密码都是tobe

cae7950b99fbb8446ec8d99f495d3280936.jpg

故意输错密码,就会报错;

a0bf09adade3df0c7544c831fd0501176a0.jpg

2. 单个文件进行认证

在虚拟主机配置文件 httpd-vhosts.conf ,按下面修改信息;

 <FilesMatch 123.php>    指定访问123.php时才认证

911210ae30f8143edd4fb4a9c712d380bc6.jpg

/usr/local/apache2.4/bin/apachectl -t //更改配置后,需要检查配置语法

/usr/local/apache2.4/bin/apachectl graceful //需要加载

vim /data/wwwroot/111.com/123.php

curl -x127.0.0.1:80 111.com        先测试111.com,访问成功

b47a4cd8cd4531750bad108a5157c73e8ea.jpg

curl -x127.0.0.1:80 111.com/123.php -I

因为给123.php加了认证,所以访问时报错

93dfbe2038c7b4c6e95bd85976fa31c0344.jpg

curl -x127.0.0.1:80 -utobe:tobe 111.com/123.php -I    加上用户名和密码可以访问

74ad35859c87ada0d1a46f04c9ba53fa61d.jpg

三、 域名跳转

域名跳转类似于将网页重新指向另一个网站,但区别是域名跳转会将域名本身重新指向网站,而不使用HTML或脚本来进行重新指向。当域名被设置为跳转至另一网站,域名的地址将不会保留在浏览器的URL栏中,该栏显示的会是新页面的URL。如果您希望保留该栏中的URL,则需要使用隐形跳转。

配置域名跳转

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

建议设置状态码为301,L只跳转一次,结束

7dd4479302c2bb73fa7be913c39e859be6a.jpg

0af6a2d7de9e2aec62189ff047e4d42e30d.jpg

查看apache是否加载了rewrite模块,若无该模块,需要编辑配置文件

/usr/local/apache2.4/bin/apachectl -M|grep -i rewrite

381047690659d3736982c32c4c6a3e24207.jpg

修改配置文件/httpd.conf ,把rewrite模块 加载上,LoadModule rewrite_module modules/mod_rewrite.so前面#号去掉

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

cde7642a03a00147bac47c9ae90ef19eb2a.jpg

加载出来了

77d688b44b3c883125b0e47e76812be753a.jpg

进行测试:

查看网络链接, :::80 代表全网都支持跳转;

647569b5d76b2f8f4f3403679468b61df0d.jpg

显示301码,会跳转,moved到111.com

curl -x192.168.37.3:80 2111.com.cn/werewrwe -I        2111.com下面,不存在的域名,只是显示跳转

curl -x192.168.37.3:80 111.com/123.php -I        真实存在的域名,会显示200状态码;

fb8d54b6e8b6f5fc212a0f27da6f4eccca9.jpg

四、Apache访问日志

1.Apache访问日志所在位置

打开日志的目录,/usr/local/apache2.4/logs/

9fa07c7530403c42f95c477fb744a285f63.jpg

d8d370773db122c1bf4df4abb0f779a0106.jpg

2. 查看日志格式

打开apache主配置文件,查找日志的格式内容

vim /usr/local/apache2.4/conf/httpd.conf             //搜索LogFormat

两个日志格式common和combined,默认使用的是common

User-Agent  用户代理

Referer  浏览器上一次所访问的网址

e62a9ff5ca41f6ece701dc753c5f03c16a7.jpg

3. 更改日志格式

再次打开虚拟主机,配置文件: vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf        把之前的common,改为combined

b475a342ea61c7363b9b2e5a0a8091fa449.jpg

重新加载虚拟主机配置文件,测试123.php,目的是为了生成新的日志

7b2cfb7ff8b4c263b15c012fd0f2e17be9e.jpg

再次查看新生成的日志

0584ed04590c89cb05268ef8a2ba4533239.jpg

五、访问日志不记录静态文件

很多网站大多为静态网页,网页内部的图片、css文件等同样有其网址链接,如果不设置,这些无效的信息也将被存入访问日志中,会导致访问日志文件大小快速增加,占用大量存储空间。我们可以通过设置不记录某些文件来减少无效信息,节省内存资源。

先访问 .jpg的文件;无论有无此文件,它都会产生日志;

curl -x192.168.94.3:80 111.com/asdqwe.jpg -I

 tail /usr/local/apache2.4/logs/111.com-access_log

最后一条 .jpg的日志,就是我们刚才访问的记录

fd931dee28838c05d97910e060607d1bbc5.jpg

 

在配置虚拟主机的配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    SetEnvIf Request_URI ".*\.gif$" img
    SetEnvIf Request_URI ".*\.jpg$" img
    SetEnvIf Request_URI ".*\.png$" img
    SetEnvIf Request_URI ".*\.bmp$" img
    SetEnvIf Request_URI ".*\.swf$" img
    SetEnvIf Request_URI ".*\.js$" img
    SetEnvIf Request_URI ".*\.css$" img
    CustomLog "logs/111.com-access_log" combined env =!img

241ff630ed0551a4814b8a1f4fa9dfce320.jpg

上面的模块释义: 将所有访问图片的请求定义为变量img,在访问记录(日志)中将其排除即可。重新加载后使用curl访问img变量中所指定格式的文件内容时将不会产生访问记录。img是变量。

此时再访问 curl -x192.168.94.3:80 111.com/qwedqwe.jpg -I的文件,日志没有记录,说明配置成功

c7ae2a7d2442d0e097b2b0d291d1e54e8ae.jpg

 cd /data/wwwroot/111.com/   使用xshell在这目录下上传一个图片image.jpg

9ad883aa59ba3b4855ba9578fcfbf0f6afe.jpg

curl -x192.168.94.3:80 111.com/image.jpg -I    在请求该文件

tail /usr/local/apache2.4/logs/111.com-access_log   依然不会记录

abcf8fd86967360a53c0450faccff6843b6.jpg

六、访问日志切割

日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件

首先配置文件,按下面更改 访问日志(CustomLog)的内容

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

先指定一个工具  /usr/local/apache2/bin/rotatelogs   httpd自带的日志切割工具

CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img

语句解释:
/usr/local/apache2.4/bin/rotatelogs工具是apache自带的分割日志的工具
-l(小写L)参数按当前系统时间为基准进行切割(我国为CST),否则默认UTC
%Y%m%d表示年月日,这样会每天记录一个带日期的日志文件,更方便
86400(s)表示每天都进行切割,一天24小时等于86400秒
082763bd5fdd09943d62663125bcc8e80be.jpg

/usr/local/apache2.4/bin/apachectl -t

/usr/local/apache2.4/bin/apachectl graceful

ls /usr/local/apache2.4/logs/

curl -x192.168.44.3:80 111.com/123.php  访问一次123.php,生产日志文件,查看也是有内容的

ad91a4fbd2393f1ec6614ac84d9290c666a.jpg

七、静态元素过期时间

配置静态元素过期时间

浏览器访问网站的图片时会把静态的文件缓存在本地电脑里,这样下次再访问时就不用去远程下载了
 

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.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 hour"
    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"    //除上述外的文件指定默认的过期时间
</IfModule>

45e654468d6f56a895f7311a69deff3baaa.jpg

/usr/local/apache2.4/bin/apachectl -M |grep expires    查看expaire模块是否打开,此时没有打开

42db8f5de2b5c39930b29cda8bf83637477.jpg

在主配置文件,去掉#号,启用expires模块    vim /usr/local/apache2.4/conf/httpd.conf

LoadModule expires_module modules/mod_expires.so //去掉#,加载模块

/usr/local/apache2.4/bin/apachectl -t

/usr/local/apache2.4/bin/apachectl graceful

/usr/local/apache2.4/bin/apachectl -M |grep expires

6a46e28113e2468736b0c5ee37517a959a8.jpg

名词

释义

acess

表示从访问时间开始

now

表示按当前时间开始

plus

在前面的时间基础上加上

1 hours/days

表示文件的生命周期

语句:access plus 24 hours 指该文件从访问的时间开始24小时内有效,无需重新获取 

 

 curl -x192.168.44.3:80 111.com/qq.jpg -I   相差24小时,86400秒

d94f08331c7c5431e0d81209be024b6e8a1.jpg

转载于:https://my.oschina.net/u/4093217/blog/3047264

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值