LAMP架构(Ⅱ)

1.Apache默认虚拟主机

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

先打开Windows的host文件查看域名并做实验

6ac779bb0d430d89dce950f1f0807aebca9.jpg

之后再Windows里面ping一下域名看看能否ping通

9f4c1a0bce613f96590627f66ee4a920db2.jpg

任何一个域名只要指向这个ip都可以认为是访问这个站点,这个站点称为虚拟主机

Linux下配置虚拟主机

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

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

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

dbf697e8bb042eeb8bedfb304a940a46661.jpg

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"         #定义网站的跟目录
    ServerName abc.com                           #定义域名只能写一个
    ServerAlias www.abc.com www.123.com          #定义别名可以写多个
    ErrorLog "logs/abc.com-error_log"            #定义错误日志
    CustomLog "logs/abc.com-access_log" common   #定义访问日志
 </VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

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

e7c63ad442b75069981b8ab7a649e117d16.jpge8c94a8e9d05193eeb72aec3174f9b45d52.jpg

9329b78419260aac5212c4590ccefaf530f.jpg

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

c43b35f62364e214f349819cbd6552b2684.jpg

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

33f2609be76399fc171dbe9831c21cd6a8a.jpg5a075c7e3a28dc05acd264ecd96ded32c16.jpg

2.Apache用户认证

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

[root@localhost ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

配置第二台虚拟主机(第一台是默认虚拟主机)

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
<Directory /data/wwwroot/111.com>        //指定认证的目录
        AllowOverride AuthConfig             //这个相当于打开认证的开关
        AuthName "111.com user auth"         //自定义认证的名字,作用不大
        AuthType Basic                       //认证的类型,一般为Basic
        AuthUserFile /data/.htpasswd         //指定密码文件所在位置
        require valid-user                   //指定需要认证的用户为全部可用用户
    </Directory>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

创建密码htpasswd Apache自带的创建命令

[root@localhost ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming

00be2315d85587673e59ea1ec26bd734ac1.jpg

再增加一个用户,就不用再添加-c;c是creat,创建的意思

88abcff62198bf0065bfd35e30e8ced1405.jpg

在链接测试

8939961b320035f82c069fc21a256195c7b.jpg5ef1b8d0d89512a4285c4c01da2d0ae9f47.jpg

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

bc449be09f2efc25b2f4fc6cde116573a96.jpg

故意输错密码,就会报错

9e5fec6b74f16dcd70fc10c371b5835c5be.jpg

单个文件进行认证

在不是默认虚拟主机上进行配置文件

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
#<Directory /data/wwwroot/111.com>
 <FilesMatch 123.php>
        AllowOverride AuthConfig
        AuthName "111.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
    </FilesMatch>
    #</Directory>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

进行测试

b51685eefd49e5d02b41c7ee2c56bb6184a.jpg

db6f3f395ac69445da4a8d3cd6c21d31006.jpg

用-u参数,把用户名 ying,密码 www123 带上,在测试123.php

ab46dcd6d80a5da4d20a8e55c7719ee2af6.jpg

3.域名跳转

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

配置域名跳转vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
#<Directory /data/wwwroot/111.com>
# <FilesMatch 123.php>
#        AllowOverride AuthConfig
#        AuthName "111.com user auth"
#        AuthType Basic
#        AuthUserFile /data/.htpasswd
#        require valid-user
#    </FilesMatch>
    #</Directory>
 <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_HOST} !^111.com$
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
   </IfModule>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

修改完成之后要检测一下然后在加载

11011ba5d446ed47224106deeb406a5f28f.jpg

修改配置文件/httpd.conf ,把rewrite模块 加载上

a4fcdcafe3b4af1e7547dafe4fe275bf0e8.jpg78c281011c7d4413defb4d051d1e0b31715.jpg

:::80 代表监听全网端口   现在进行测试

2621455abb5165bfcdd06a07c327537d075.jpg

4.Apache访问日志

Apache访问日志所在位置  /usr/local/apache2.4/logs/

[root@localhost ~]# ls /usr/local/apache2.4/logs/111.com-access_log

查看日志

043d8043e6cf7c8b4e48311f91f221ec15f.jpg

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

ae2f69bb65e785f117ed02e197545a249b9.jpg

更改日志格式     vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

9847b8bfd3715a12a735dea941c759b24ca.jpg

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

a2681bfd285e0ba2aae469bd46974b7a409.jpg

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

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

先访问一个jpg文件

eb6117c6a307ebe8d2e1682c76b2770fee4.jpg4a1bd345754b144b974b5ce440482e867cf.jpg

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

 <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_HOST} !^111.com$
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
   </IfModule>
    ErrorLog "logs/111.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/111.com-access_log" combined env=!img

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

d2734ea62d5f4a8427ebff2cd12afef83b2.jpg

总结:日志配置成功

6.访问日志切割

配置文件,按下面更改 访问日志的内容

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参数按当前系统时间为基准进行切割(我国为CST),否则默认UTC
  • %Y%m%d表示年月日,这样会每天记录一个带日期的日志文件,更方便
  • 86400(s)表示每天都进行切割,一天24小时等于86400秒

修改好之后访问日志检测

b09a4336c295b15b2df132e1c83af6147f1.jpgfc2b8a9e479f85d110d7e0ca904e817d676.jpg

7.静态元素过期时间

启用expires模块

52865f796024da938c022776cf04c8b1276.jpg

虚拟主机下增加模块

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

bf4e1cfa24b20650b347c109b746971d153.jpg

 

转载于:https://my.oschina.net/u/4000361/blog/2967035

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值