2018-6-27 笔记

2018-6-27 笔记

11.16 Apache默认虚拟主机

一个服务器可以运行多个网站,每个网站都是一个虚拟主机

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

在dns还未生效时,通过修改hosts文件,设置ip与域名的映射解析,来配置域名。

在Windows系统中写hosts

Windows系统中hosts位置

“C:\Windows\System32\drivers\etc\hosts” 可以在里面定义ip域名,,

注释掉之后,会链接公网ip,因为不被指定
说明:在此可以自定义匹配本地IP和域名,目的是添加临时访问地址(在DNS未生效的时候使用)。

这里为apache默认主机,

去掉注释:

虚拟主机配置文件

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

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

 

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

# Almost any Apache directive may gointo a VirtualHost container.

# The first VirtualHost section is usedfor all requests that do not

# match a ServerName or ServerAlias inany <VirtualHost> block.

#

<VirtualHost *:80>

ServerAdmin webmaster@dummy-host.example.com此行可删掉

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>

ServerAdmin webmaster@dummy-host2.example.com 

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>

每组代表一个主机,也就是一个网站,如果不打开他,任何域名就只能访问这一个主机

# mkdir /data/wwwroot 创建对应的目录

# mkdir /data/wwwroot/abc.com

# mkdir /data/wwwroot/111.com

# vim /data/wwwroot/abc.com/index.php

# vim /data/wwwroot/111.com/index.php

# /usr/local/apache2.4/bin/apachectl -t检查是否有错误

Syntax OK

# /usr/local/apache2.4/bin/apachectlgraceful重新加载

 

# curl -x 192.168.133.13080 abc.com  指定网址访问的ip,与配置hosts效果一样

结论:在htttpt.conf内打开Virtual hosts文件从而使虚拟主机配置文件生效,而主机配置文件内的DocumentRootservername文件将失效,,,而且虚拟主机配置文件内可以定义多个VirtualHost,每个VitualHost都有其DocumentRootServerName,,每个VirtaulHost都代表一个主机,唯独特殊的一位第一个也就是默认虚拟主机,任何一个域名解析到这个ip上,都会访问到这个默认虚拟主机上

11.18Apache用户认证

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

<VirtualHost*:80>

DocumentRoot"/data/wwwroot/111.com"

ServerName111.com

<Directory/data/wwwroot/111.com> //指定认证的目录

AllowOverrideAuthConfig //打开认证开关

AuthName"111.com user auth" //自定义认证名称

AuthType Basic //认证类型

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

requirevalid-user //指定需要认证的用户为全部可用用户

</Directory>

#/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming 生成密码文件

New password:输入密码

Re-type newpassword:再次

Adding passwordfor user aming

# cat/data/.htpasswd

aming:$apr1888888888888888888888888888

#/usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd zhangsan

New password:

Re-type newpassword:

Adding passwordfor user usertest

# cat/data/.htpasswd

aming:$apr1$TNhQeaqF$hF0bTFA5U151cnolkOsN81

usertest:9999999999999999999999999999999999

重新加载:#/usr/local/apache2.4/bin/apachectl -t

Syntax OK

#~~~~~~/bin/apachectlgraceful

 

# curl-x127.0.0.1:80 111.com

<!DOCTYPEHTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>401Unauthorized</title>

~

# curl-x127.0.0.1:80 111.com -I

HTTP/1.1 401Unauthorized

Date: Sun, 04Mar 2018 14:45:26 GMT

Server:Apache/2.4.28 (Unix) PHP/7.1.6

WWW-Authenticate:Basic realm="111.com user auth"

Content-Type:text/html; charset=iso-8859-1

401为提示需要验证,密码登录即可

# curl-x127.0.0.1:80 111.com -u aming:lishiming

111.com  curl输入密码格式

# curl-x127.0.0.1:80 111.com -u aming:123456 -I

HTTP/1.1 200 OK

 

# curl-x127.0.0.1:80 111.com -u aming:1234567输错密码仍然提示401

<!DOCTYPEHTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>401Unauthorized</title>

 

针对单个文件进行认证:

<VirtualHost*:80>

DocumentRoot"/data/wwwroot/111.com"

ServerName111.com

#<Directory/data/wwwroot/111.com>

<FilesMatch 123.php>

AllowOverride AuthConfig

AuthName "111.com user auth"

AuthType Basic

AuthUserFile /data/.htpasswd

require valid-user当访问123.php这个文件(FilesMatch)的时候才会执行这些配置

</FilesMatch>

#</Directory>

ErrorLog"logs/111.com-error_log"

CustomLog"logs/111.com-access_log" common

</VirtualHost>

 

# vim conf/extra/httpd-vhosts.conf

#./bin/apachectl -t

Syntax OK

#./bin/apachectl graceful

 

# curl -x127.0.0.1:80 111.com

111.com

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

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML2.0//EN">

<html><head>

<title>401 Unauthorized</title>

# curl -x127.0.0.1:80 111.com/123.php -u aming:lishiming

123.php  测试

11.1911.20 域名跳转(上)(下)

301永久跳转 302临时重定向 403授权

<IfModule mod_rewrite.c> //需要mod_rewrite模块支持
        RewriteEngineon  //
打开rewrite功能 on/off
        RewriteCond%{HTTP_HOST} !^111.com$ //
定义Rewrite条件,当主机名不是111.com时满足条件
        RewriteRule ^/(.*)$httpd://111.com/$1 [R=301,L]  //
定义rewrite规则,当满足上面条件时,这条规则才会执行


</IfModule>

配置完毕要检测>重新加载

检测apache是否加载了rewrite模块,如果没有加载# vi /usr/local/apache2.4/conf/httpd.conf(因为在编译时候加了most,所以此模块一定存在)

打开这一行

模块已经加载

可以开始测试:

# curl -x192.168.133.15080 2111.com.cn -I-I不显示内容,只显示状态码)

可以实现跳转:

11.21Apache访问日志

定义日志格式:

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

LogFormat,就是日志的格式

默认为common格式 combined会多出用户代理(User -Agentreferer 上一级历史

更改格式:

修改虚拟主机配置文件:

保存

查看日志

11.22访问日志不记录静态文件

在这里定义

将红色类型请求,不记录在日志内

11.23访问日志切割

在虚拟机配置文件下修改:
 CustomLog"|/usr/local/apache2.4/bin/rotatelogs -l logs/etc.com-access_%y%m%d.log86400" combined  env=!img
指定工具rotatelogs -l 
%y%m%d
:设置日志显示年月日
86400
:切割时间(即一天)
然后访问一次:
curl -x 127.0.0.1:80  www.etc.com -I 

11.24静态元素过期时间

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

增加配置:

需要打开expiers_module模块

1.vim/usr/local/apache2.4/conf/httpd.conf—搜索expiers去掉#

 

2.在虚拟机配置增加配置:

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

<IfModule mod_expires.c>

       ExpiresActive on //打开功能开关

       ExpiresByType image/gif "access plus 1 days"  //设置文件类型,和缓存时间

       ExpiresByType image/jpeg "access plus 1 days"

       ExpiresByType image/png "access plus 24 hours" //也可以设置小时

       ExpiresByType text/css "nowplus 2 hour"

       ExpiresByType application/x-javascript "access plus 1 days"

       ExpiresByType application/javascript "access plus 1 days"

       ExpiresByType application/x-shockwave-flash "access plus 1days"

       ExpiresDefault "now plus 0min"

</IfModule>

3. /usr/local/apache2.4/bin/apachectl-t  //检查

      /usr/local/apache2.4/bin/apachectl graceful //加载配置文件

4.查看expires是否加载

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

扩展 
apache
虚拟主机开启php的短标签 http://ask.apelearn.com/question/5370
apache
日志记录代理IP以及真实客户端IPhttp://ask.apelearn.com/question/960
apache
只记录指定URI的日志 http://ask.apelearn.com/question/981
apache
日志记录客户端请求的域名 http://ask.apelearn.com/question/1037
apache
日志切割问题 http://ask.apelearn.com/question/566

 

 

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值