httpd 虚拟主机建立之访问机制及其日志定义
注:关闭防火墙,selinux
VirtualHost定义:
基于IP地址VirtualHost:
编辑httpd.conf文件:
#DocumentRoot "/web/html" #注释主服务配置
下面来建立虚拟主机,如果不在httpd.conf文件内编辑虚拟主机,也可以新建一个虚拟主机文件来工作.
在/etc/httpd/conf.d/下新建虚拟主机配置文件
vim /etc/httpd/conf.d/virtualhost.conf
编辑
<VirtualHost 10.140.165.169:80> #指定iip地址和端口
ServerName www.izyno.com #指定主机名
DocumentRoot "/www/izyno.com" #指定主机根目录,需要新建.
</VirtualHost><VirtualHost 10.140.165.170:80>
ServerName www.51cache.top
DocumentRoot "/www/51cache.top"
</VirtualHost>新建主机根目录和编辑主页文件:
[root@cnhzdhcp165169 ~]# mkdir /www/{izyno.com,51cache.top}
<h1> Welcome to my 51cache.top</h1> #在51cache.top下新建index.html文件,添加内容;
<h1> Welcome to my izyno.com</h1> #在izyno.com下新建index.html文件,添加内容;
指定网卡别名IP地址:
[root@cnhzdhcp165169 ~]# ip addr add 10.140.165.170/24 dev eth0
测试:
基于端口的VirtualHost:
编辑virtualhost.conf文件添加以下:
<VirtualHost 10.140.165.170:8080> #指定端口
ServerName www.51cache.org
DocumentRoot "/www/51cache.org"
</VirtualHost>在httpd.conf文件中添加监听端口:
listen 8080端口
测试:
基于主机名的VirtualHost:
编辑virtualhost.conf文件添加:
<VirtualHost 10.140.165.169:80>
ServerName www.b.com
DocumentRoot "/www/b.com"
</VirtualHostmkdir /www/b.com
vim index.html
<h1>Welcome to my b.com site</h1>
设置windows hosts文件或者设置dns,这里设置hosts文件:
10.140.165.169 www.b.com
10.140.165.169 www.izyno.com重启httpd服务出现如下警告:
Starting httpd: [Mon Oct 10 10:50:06 2016] [warn] VirtualHost 10.140.165.169:80 overlaps with VirtualHost 10.140.165.169:80, the first has precedence, perhaps you need a NameVirtualHost directive
[Mon Oct 10 10:50:06 2016] [warn] NameVirtualHost *:80 has no VirtualHosts注:以上意思是说当前虚拟主机未配置基于域名的虚拟主机。指向同一条IP地址的多个文件目录基于名都会被第一条覆盖。即此时访问xxx.com或者yyy.com都会转向到xxx.com。
需要在virtualhost.conf添加: NameVirtualHost 10.140.165.169:80
测试:
完成.
virtualHost 访问机制定义:
定义izyno.com主机用户访问认证机制:
编辑virtualhost.conf:
<VirtualHost 10.140.165.169:80>
ServerName www.izyno.com
DocumentRoot "/www/izyno.com"
<Directory "/www/izyno.com">
Options none
AllowOverride authconfig #允许使用与认证授权相关的指令,他们包括AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthTypeAuthUserFile和Require
AuthType basic
AuthName "my site."
AuthUserFile "/etc/httpd/.htpasswd" #指定用户认证文件,需要使用htpasswd生成.
Require valid-user #定义为所有认证用户可以访问
</Directory>
</VirtualHost>使用htpasswd生成用户: 这里创建了两个用户分别是tom 和 jory
htpasswd –c –m /etc/httpd/.htpasswd tom #-c第一次创建时需要添加,第二次创建如果加上会覆盖掉之前的.-m,使用md5格式加密密码.
测试:
![]()
可以访问,当然也可以正对于某个用户设置或者某个组.
设置某个网段或者固定的IP地址的访问权限:
编辑virtualhost.conf文件添加以下:
<VirtualHost 10.140.165.170:80>
ServerName www.51cache.top
DocumentRoot "/www/51cache.top"
<Directory "/www/51cache.top">
Options none
AllowOverride none
Order deny,allow
Deny from 10.140.165.93 #拒绝93IP进行访问,如果是一个网段也可以添加为:10.140.165.0/24,allow机制不再2.4中支持.
</Directory>
</VirtualHost>测试:
![]()
设置virtualhost日志记录机制:
编辑virtualhost.conf文件,添加日志记录功能:
<VirtualHost 10.140.165.169:80>
ServerName www.izyno.com
DocumentRoot "/www/izyno.com"
CustomLog /var/log/httpd/izyno.com/access_log combined #添加日志记录,需要新建izyno.com文件.
<Directory "/www/izyno.com">
Options none
AllowOverride authconfig
AuthType basic
AuthName "my site."
AuthUserFile "/etc/httpd/.htpasswd"
Require valid-user
</Directory>
</VirtualHost>新建日志目录:
mkdir /var/log/httpd/{izyno.com,b.con,51cache.top,51cache.org} –pv
测试:
客户端访问b.com,查看b.com生成的日志:
[root@cnhzdhcp165169 b.com]# ls
access_log
[root@cnhzdhcp165169 b.com]# cat access_log
10.140.184.166 - - [10/Oct/2016:12:34:37 +0800] "GET / HTTP/1.1" 200 34 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3)"
10.140.184.166 - - [10/Oct/2016:12:34:37 +0800] "GET /favicon.ico HTTP/1.1" 404 284 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3)"完成日志机制.
设置访问的页面不存在default页面跳转:
在virtualhost.conf添加默认跳转:
<VirtualHost 10.140.165.169:80>
ServerName _default_
DocumentRoot "/www/default"
</VirtualHost>新建default/index.html
测试:
Apache的日志又多又杂,如果靠分析日志或者查看服务器进程来监视Apache运行状态的话,比较繁冗。其实在Apache 1.3.2及以后的版本中就自带一个查看Apache状态的功能模块server-status
定义Location server-status 机制:
编辑httpd.conf文件取消以下的#号注释.
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from 10.140.184.166
</Location>
测试:在10.140.184.166进行访问:
这是一个完整的server-status的配置。
第一行的ccvita-server-status表示以后可以用类似http://www.ccvita.com/ccvita-server-status来访问,同时
http://www.ccvita.com/ccvita-server-status?refresh=N将表示访问状态页面可以每N秒自动刷新一次;
Deny from表示禁止的访问地址;
Allow from表示允许的地址访问;
ExtendedStatus On表示的是待会访问的时候能看到详细的请求信息,另外该设置仅能用于全局设置,不能在特定的虚拟主机中打开或关闭。启用扩展状态信息将会导致服务器运行效率降低。在10.140.165.93下访问:
完成.
httpd 虚拟主机建立之访问机制及其日志定义的更多相关文章
- 配置httpd虚拟主机
轻松配置httpd的虚拟主机 httpd使用VirtualHost指令进行虚拟主机的定义.支持三种虚拟主机:基于ip,基于端口和基于名称.其中基于端口的虚拟主机在httpd的术语上(例如官方手册)也属 ...
- Linux系统学习 十九、VSFTP服务—虚拟用户访问—为每个虚拟用户建立自己的配置文件,单独定义权限
为每个虚拟用户建立自己的配置文件,单独定义权限 可以给每个虚拟用户单独建立目录,并建立自己的配置文件.这样方便单独配置权限,并可以单独指定上传目录 1.修改配置文件 vi /etc/vsftpd/vs ...
- httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接等应用配置实例
httpd配置内容 httpd2.2 配置文件: /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf 服务脚本: /etc/rc.d/init.d/ ...
- 简述站点访问控制、基于用户的访问控制、httpd虚拟主机、持久链接等应用配置实例
1 站点访问控制 可基于两种机制指明对哪些资源进行何种访问控制: 文件系统路径 URL路径 注意: 从上到下匹配,匹配到一个就立即执行 如果没有子目录的访问控制,但是有父目录的访问控制,则子目录继承父 ...
- apache开启虚拟主机localhost无法访问
今天在集成环境下配虚拟主机,没想到虚拟主机开启后,localhost竟然无法访问了,解决办法是这样的: 实例一,Apache 配置localhost虚拟主机步骤 1,用记事本打开apache目录下ht ...
- CentOS7配置httpd虚拟主机
本实验旨在CentOS7系统中,httpd-2.4配置两台虚拟主机,主要有以下要求: (1) 提供两个基于名称的虚拟主机: www1.stuX.com,页面文件目录为/web/vhosts/www1: ...
- httpd虚拟主机起不来!!
前几天在公司,练习负载均衡配置.在配置虚拟主机的web服务(apache) ,创建好虚拟主机的配置文件 ss -tnl 查看监控端口80已起来,通过本地浏览器访问一直显示默认的欢迎页... 一个下午 ...
- Apache配置虚拟主机后,不能访问localhost
解决方法:将localhost设为虚拟域名 重要的是要注释掉httpd.conf文件的ServerName localhost:80
- Apache配置虚拟主机后,不能访问localhost的问题
今天想试用一下php7,但是发现php7只支持Apache2.4版本,而我电脑上的Apache是2.2版本,为了想尝鲜,就必须去下载新的Apache2.4 php7和apache2.4安装整合以后,l ...
随机推荐
- mvc之页面强类型
为什么使用页面强类型: 一个页面只能定义 为一个强类型.因为 我们自己写@Html.TextBox("Qq"); 有可能写错,所以我们就在 编译阶段就把页当作一个类型然后使用lam ...
- 0601 Spring2.0 发布会
ProductBacklog:继续向下细化; 1.界面美化,统一界面风格,以简洁美观为主: 2.丰富版面的内容,吸引用户: 3.尝试增加新的版面: Sprint 计划会议:确定此次冲刺要完成的目标 1 ...
- NHibernate系列文章五:NHibernate配置
摘要 NHibernate有多种配置方法,代码,xml文件,以及Fluent NHibernate.这里只介绍最常用的两种NHibernate配置方法:通过代码和通过配置文件. 1. 通过代码配置 通 ...
- TCheckListBox
TCheckListBox.CheckListBox http://www.cnblogs.com/mingdep/archive/2012/03/20/2408282.html 全部打勾 for ( ...
- java 调用 r, Can't find dependent libraries
rJava是一个R语言和Java语言的通信接口,通过底层JNI实现调用,允许在R中直接调用Java的对象和方法. 步骤: 1.本地系统: Win7 64bit 企业版, jdk1.8.0_45,R3. ...
- mgo中DBRef-数据查询测试
下午对数据查询进行了代码测试: package main import ( "crypto/rand" "encoding/hex" "fmt&quo ...
- ios block和函数的区别
block是封装了一段代码的OC对象,可以被设为Property, 在调用block的地方block都会被替换成相应的代码,相当于内联函数. 函数可以使代码更加整洁易读,使用block会使代码可读性变 ...
- fis3安装
主要安装过程参考官网:http://fis.baidu.com/fis3/docs/beginning/install.html 这里记录安装fis3时遇到的一些问题: 1.npm install - ...
- Linux内核分析第四周学习总结:扒开系统调用的三层皮(上)
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核 ...
- (转载)IOS中UIScrollView的属性和委托方法
http://www.jizhishusheng.com/?p=453 ---- 以下内容来自 UIScrollView 类负责所有基于 UIKit 的滚动操作一.创建 1. CGRect bou ...









