标签:.so 服务 运行 内容 报文 ret 访问控制 添加 xtend
??14、虚拟主机
站点标识:socket `用户访问的内容是根据socket来判断各类各样内容`
IP相同,但端口不同
IP不同,但端口均为默认端口
FQDN不同;
请求报文中首部
Host: www.abc.com
有三种实现方案:
基于ip:为每个虚拟主机准备至少一个ip地址
基于port:为每个虚拟主机使用至少一个独立的port
基于FQDN:为每个虚拟主机使用至少一个FQDN
注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,一般先禁用main主机
禁用方法:注释中心主机的DocumentRoot指令即可() CentOS 6的2.2版本
虚拟主机的配置方法:
<VirtualHost IP:PORT>
ServerName FQDN
DocumentRoot "/path"
</VirtualHost>
建议:上述配置存放在独立的配置文件中
其它可用指令:
ServerAlias:虚拟主机的别名;可多次使用
ErrorLog:错误日志
CustomLog:访问日志
<Directory "/path">
</Directory>
Alias
添加虚拟主机设置: `解决访问量不大,给公司内部建立小网站/客服网站等等`
https不能在同一个IP地址建立多个虚拟主机,需要用不相同的地址解决;一般虚拟主机不会用https来做站
示例:
cd /app `??????以下基础调整`
mkdir website1
mkdir website2
mkdir website3
echo /app/website1/index.html > website1/index.html
echo /app/website2/index.html > website2/index.html
echo /app/website3/index.html > website3/index.html
ip a a 172.18.16.10/16 dev eth2
ip a a 172.18.16.20/16 dev eth2
ip a a 172.18.16.30/16 dev eth2
vim /etc/httpd/conf/httpd.conf `将### Section 3: Virtual Hosts相关功能开启或单独写到conf.d配置路径里,用户打开虚拟主机功能`
<VirtualHost *:80> `每个虚拟主机需要独立的一条virtualhost配置`
ServerAdmin webmaster@dummy-host.example.com `管理员的邮箱`
DocumentRoot /www/docs/dummy-host.example.com `各自首页的主目录`
ServerName dummy-host.example.com `若基于ip地址,该条域名定义不重要`
ErrorLog logs/dummy-host.example.com-error_log `错误日志`
CustomLog logs/dummy-host.example.com-access_log common `日常日志`
</VirtualHost>
service httpd reload
`??????以上基础调整`
??基于IP的虚拟主机示例:
<virtualhost 172.18.253.12:80>
documentroot "/app/website1"
</virtualhost>
<virtualhost 172.18.16.10:80>
documentroot "/app/website2"
</virtualhost>
<virtualhost 172.18.16.20:80>
documentroot "/app/website3"
</virtualhost>
<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.7:80>
ServerName www.b.net
DocumentRoot "/www/b.net/htdocs"
</VirtualHost>
<VirtualHost172.16.100.8:80>
ServerName www.c.org
DocumentRoot "/www/c.org/htdocs"
</VirtualHost>
??基于端口的虚拟主机:可和基于IP的虚拟主机混合使用
listen 172.18.253.12:81
listen 172.18.253.12:82
listen 172.18.253.12:83
<virtualhost 172.18.253.12:81>
documentroot "/app/website1"
</virtualhost>
<virtualhost 172.18.253.12:82>
documentroot "/app/website2"
</virtualhost>
<virtualhost 172.18.253.12:83>
documentroot "/app/website3"
</virtualhost>
listen 808
listen 8080
<VirtualHost172.16.100.6:80>
ServerName www.a.com
DocumentRoot "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.6:808>
ServerName www.b.net
DocumentRoot "/www/b.net/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.6:8080>
ServerName www.c.org
DocumentRoot "/www/c.org/htdocs"
</VirtualHost>
疑问:在偶然情况下出现,并且端口也并未在监听状态;在重启服务之后恢复正常
[Fri Sep 29 00:04:12 2017] [error] (EAI 2)Name or service not known: Failed to resolve server name for 172.18.253.12 (check DNS) -- or specify an explicit ServerName
??基于FQDN的虚拟主机: 基于域名,启动后主战点即失效;根据ip查地址,排前排的默认先搜索到
NameVirtualHost *:80 `httpd2.2需要打开才能使用虚拟主机;httpd2.4不需要此指令;配置方法照旧,主配置文件或者conf.d下`
namevirtualhost *:80
<virtualhost *:80>
servername www.a.com
documentroot "/app/website1"
customlog logs/www.a.com-access_log combined `增加系统日志记录功能`
ErrorLog logs/www.a.com-error_log combined `定义错误日志,格式按照combined`
</virtualhost>
<virtualhost *:80>
servername www.b.com
documentroot "/app/website2"
customlog logs/www.b.com-access_log combined
ErrorLog logs/www.b.com-error_log combined
</virtualhost>
<virtualhost *:80>
servername www.c.com
documentroot "/app/website3"
customlog logs/www.c.com-access_log combined
ErrorLog logs/www.c.com-error_log combined
</virtualhost>
后续补充hosts/DNS服务端等相关信息即可(需要详细调整查看之前的bind笔记即可)
yum install bind
vim /etc/named.conf
vim /etc/named.rfc1912.zones
42 zone "a.com" {
43 type master;
44 file "a.com.zone";
45 };
46 zone "b.com" {
47 type master;
48 file "b.com.zone";
49 };
50 zone "c.com" {
51 type master;
52 file "c.com.zone";
53 };
vim /etc/named/a.com.zone(补充b和c的完成;在能解析到172.18.12.22地址即可)
1 $TTL 86400 ; 1 day
2 @ IN SOA dns1 admin.a.com. (
3 2017010101 ; serial
4 86400 ; refresh (1 day)
5 3600 ; retry (1 hour)
6 604800 ; expire (1 week)
7 10800 ; minimum (3 hours)
8 )
9 NS dns1
10 dns1 A 172.18.56.53
11 websrv A 172.18.12.22 `虚拟主机的ip是172.18.12.22,只要能解析到该地址,内容皆可访问`
12 www CNAME websrv
chown :named a.com.zone
cp -p a.com.zone b.com.zone
...
systemctl start named
dig www.a.com @127.0.0.1 `测试成功`
客户机调整dns后开始测试网页/etc/resolv.conf
能ping,能curl www.a.com `完成搭建`
telnet 172.18.12.12
GET / HTTP/1.1
host:www.a.com
...
<VirtualHost*:80>
ServerName www.a.com
DocumentRoot "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost*:80>
ServerName www.b.net
DocumentRoot "/www/b.net/htdocs"
</VirtualHost>
<VirtualHost *:80>
ServerName www.c.org
DocumentRoot "/www/c.org/htdocs"
</VirtualHost>
??15、status页面 httpd.conf的921行
LoadModule status_module modules/mod_status.so `在/etc/httpd/conf/httpd.conf里加载的其中一个模块`
<Location /server-status> `在虚拟目录显示当前站点信息http://servername/server-status;域后边的虚拟目录可自定义`
SetHandler server-status `内部机制调用了SetHandler功能调用server-status模块`
Order allow,deny
Allow from .example.com `使用了访问控制,拒绝所有,除了.example.com这个域可访问`
</Location>
ExtendedStatus On 显示扩展信息 `去掉注释开启功能后显示更多信息;228行`
实验:根据之前搭建的地址进行开放status状态信息查询()
vim /etc/httpd/conf/httpd.conf
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 172.18
</Location>
service httpd reload
浏览器:
http://172.18.253.12/server-status
服务器版本:Apache / 2.2.15(Unix)DAV / 2
服务器构建:2017年3月22日06:52:55
当前时间:2011年9月29日,星期五03:02:06 CST
重新启动时间:2017年9月29日,星期五02:59:59 CST
父服务器生成:2 `达到一定量将杀死某些进程,并递增新代`
服务器正常运行时间:2分7秒
目前正在处理1个请求,7个空闲工作人员
w ^ _______................................................. ....
.................................................. ..............
.................................................. ..............
.................................................. ..............
记分牌的关键:
"_"等待连接 "S"启动 "R"读取请求时
"W"发送回复 "K"保持连接(读)"D" DNS查找
"C"关闭连接 "L"日志 "G"优雅地完成/不能暴力,类似kill -15
"I"工作人员空闲清理, "."打开没有当前进程的槽/无打开socket状态的
PID键:
36281状态:W, 36282状态:_, 6283状态:_
36284状态:_, 36285状态:_, 36286状态:_
36287状态:_, 36288状态:_,
要获取具有当前状态信息的完整报告,您需要使用该ExtendedStatus On指令。
Apache Server在172.18.253.12端口80
开启ExtendedStatus On功能显示的内容
Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
2-0 36634 0/0/0 W 0.00 0 0 0.0 0.00 0.00 172.18.252.127 www.a.com GET /server-status HTTP/1.1
Srv 子服务器编号 - 代
PID 操作系统进程ID
Acc 此连接的访问??次数/此子进程/此插槽
M 操作模式
CPU CPU使用率,秒数
SS 从最近的请求开始以来的二分之一秒
Req 处理最近的请求所需的毫秒数
Conn 千字节转移了这个连接
Child 兆字节转移了这个子进程
Slot 传输这个插槽的总兆字节数
标签:.so 服务 运行 内容 报文 ret 访问控制 添加 xtend
原文地址:http://www.cnblogs.com/mount-q/p/7634449.html