LAMP 配置

  1. Apache默认虚拟主机
  2. Apache用户认证
  3. 域名跳转
  4. Apache访问日志
  5. 访问日志不记录静态文件
  6. 访问日志切割
  7. 静态元素过期时间

1. Apache默认虚拟主机

一台服务器可以访问多个网站,每个网站都是一个虚拟主机
概念:域名(主机名)、DNS、解析域名、hosts
任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机

vim /usr/local/apache2.4/conf/httpd.conf #搜索httpd-vhost,去掉#

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

/usr/local/apache2.4/bin/apachectl -t #检查是否有错
/usr/local/apache2.4/bin/apachectl graceful #重新加载

curl #打开网页
curl -x

结论
在主配置文件中打开了 Virtual hosts后,虚拟主机配置文件生效;
主配置文件中配置的 DocumentRoot 以及ServerName失效;
虚拟主机配置打开,里面可以定义很多VirtualHost
一对VirtualHost就表示一个站点
默认虚拟主机,无论任何域名解析到这个ip上都会去访问这个默认虚拟主机

2. Apache用户认证(输入用户名密码后才能打开网页)

配置虚拟主机用户认证,如图

报错

删除注释及文字后正常
/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming #-c创建 -m表示MD5加密方式
/usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd lisi #第二次执行不用创建则去掉-c

curl -x127.0.0.1:80 www.123.com

[root@test ~]# curl -x127.0.0.1:80 www.123.com -ulisi:123456789 -I

  • 针对当文件进行认证
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    <FilesMatch admin.php> #使用FilesMatch 针对admin.php文件做认证
        AllowOverride AuthConfig
        AuthName "123.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
    </FilesMatch>
</VirtualHost>

3. 域名跳转

场景更换域名的时候

配置如下

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/data/wwwroot/111.com"
    ServerName www.111.com
    ServerAlias www.789.com
 <IfModule mod_rewrite.c> 
        RewriteEngine on 
        RewriteCond %{HTTP_HOST} !^www.111.com$ 
        RewriteRule ^/(.*)$ http://www.111.com/$1 [R=301,L] 
 </IfModule>

    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>
说明
将不是www.111.com的域名跳转到www.111.com 
主域名后面的文件不操作继续带
状态码301表示永久重定向会将原域名的权重加给新域名
状态码302表示临时重定向

[root@test ~]# /usr/local/apache2.4/bin/apachectl -M|grep -i rewrite
[root@test ~]# vi /usr/local/apache2.4/conf/httpd.conf
[root@test ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@test ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@test ~]# /usr/local/apache2.4/bin/apachectl -M|grep -i rewrite
 rewrite_module (shared)

  • 跳转成功
[root@test ~]# curl -x127.0.0.1:80 www.789.com -i 
HTTP/1.1 301 Moved Permanently
Date: Thu, 09 May 2019 15:25:48 GMT
Server: Apache/2.4.38 (Unix) PHP/5.6.30
Location: http://www.111.com/
Content-Length: 227
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.111.com/">here</a>.</p>
</body></html>

4. Apache访问日志

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
  • 更改虚拟主机log配置文件
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com 
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" combined  #combined定义了日志格式
</VirtualHost>

  • 更改后格式样式
182.150.172.160 - - [09/May/2019:23:49:03 +0800] "GET / HTTP/1.1" 200 7 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"
182.150.172.160 - - [09/May/2019:23:49:08 +0800] "GET / HTTP/1.1" 200 7 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"

5. 访问日志不记录静态文件

不记录图片,js,css等静态文件,可以预防日志文件过大

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com 
    ErrorLog "logs/abc.com-error_log"
    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/abc.com-access_log" combined env=!img
</VirtualHost>

说明: 先给gif,ipg,png,bmp,swf,js,css等打上标记,
然后在用env=!img来过滤

6. 访问日志切割

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

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com 
    ErrorLog "logs/abc.com-error_log"
    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 "|/usr/local/apache2.4/bin/rotatelogs -l logs/abc.com-access_%Y%m%d.log 86400" combined env=!img
</VirtualHost>

说明:
给日志指定一个httpd带的一个切割工具,-l指定时间CST
需要切割所以指定文件名变量用年月日来表示
切割时间为86400秒表示1天

7. 静态元素过期时间

  • 配置静态元素过期时间 <IfModule mod_expires.c>
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com
<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>
 
    ErrorLog "logs/abc.com-error_log"
    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 "|/usr/local/apache2.4/bin/rotatelogs -l logs/abc.com-access_%Y%m%d.log 86400" combined env=!img
</VirtualHost>

检测expaire模块是否打开
[root@test ~]# /usr/local/apache2.4/bin/apachectl -M|grep -i expire
[root@test ~]#
没有打开
编辑主配置文件
vim /usr/local/apache2.4/conf/httpd.conf
#LoadModule expires_module modules/mod_expires.so
去掉模块前面的注释

下载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

转载于:https://my.oschina.net/zenghong133/blog/3047768

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值