这里写目录标题
Web服务基础
Web服务基础:提供页面的内容
http:超文本传输协议 默认端口80
Hyper Text Markup Language(html),超文本标记语言
• 基于 B/S (Browser/Server)架构的网页服务
– 服务端提供网页
– 浏览器下载并显示网页
Web服务 http协议 httpd(软件) Apache基金会
虚拟机server:
1.安装httpd软件
2.书写页面文件
3.重启httpd服务
#####################################################
• 软件包:httpd
• 系统服务:httpd
• 提供的默认配置
– Listen:监听地址:端口(80)
– ServerName:本站点注册的DNS名称(空缺)
– DocumentRoot:设置网页文件根目录(/var/www/html)
– DirectoryIndex:起始页/首页文件名(index.html)
DocumentRoot:设置网页文件根目录(/var/www/html)
虚拟机server:
]# mkdir /var/www/myweb
]# echo ‘
wo shi myweb’ > /var/www/myweb/index.html
]# vim /etc/httpd/conf/httpd.conf
DocumentRoot “/var/www/myweb”
]# systemctl restart httpd
]# firefox 172.25.0.11
###################################################
客户端访问:firefox http://172.25.0.11:80----->服务端接收------->80端口---->httpd程序----->DocumentRoot /var/www/myweb----->index.html
网络路径与实际路径
客户端:firefox 172.25.0.11 = /var/www/myweb
服务端: /var/www/myweb
客户端:firefox 172.25.0.11/abc
服务端: /var/www/myweb/abc
DocumentRoot /var/www/myweb
客户端:firefox 172.25.0.11/var/www/myweb/nsd/test
服务端: /var/www/myweb/var/www/myweb/nsd/test
虚拟机server:
]# mkdir /var/www/myweb/abc
]# echo ‘<h1>wo shi abc’ > /var/www/myweb/abc/index.html
]# firefox 172.25.0.11/abc
####################################################
主配置文件:/etc/httpd/conf/httpd.conf
调用配置文件:/etc/httpd/conf.d/*.conf
/etc/httpd/conf.d/dc.conf
/etc/httpd/conf.d/tc.conf
####################################################
虚拟Web主机(虚拟站点)
虚拟主机的含义及类型
• 虚拟Web主机
– 由同一台服务器提供多个不同的Web站点
• 区分方式
– 基于域名的虚拟主机
– 基于端口的虚拟主机 www.qq.com:80 www.qq.com:8000
– 基于IP地址的虚拟主机
• 为每个虚拟站点添加配置
<VirtualHost IP地址:端口>
ServerName 此站点的DNS名称
DocumentRoot 此站点的网页根目录
DNS服务器:虚拟机classroom
server0.example.com
www0.example.com
webapp0.example.com
虚拟机server:
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80> #本机所有ip地址开启虚拟Web主机功能
ServerName server0.example.com #设置网站访问的域名
DocumentRoot /var/www/qq #设置网页文件存放路径
</VirtualHost>
<VirtualHost *:80>
ServerName www0.example.com
DocumentRoot /var/www/baidu
</VirtualHost>
一旦使用虚拟Web主机功能,所有的页面都必须利用虚拟Web主机呈现虚拟机Server:
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName server0.example.com
DocumentRoot /var/www/qq
</VirtualHost>
<VirtualHost *:80>
ServerName www0.example.com
DocumentRoot /var/www/baidu
</VirtualHost>
<VirtualHost *:80>
ServerName webapp0.example.com
DocumentRoot /var/www/myweb
</VirtualHost>
[root@server0 ~]# systemctl restart httpd
#####################################################
Web访问控制
针对网页文件存放的路径进行访问控制,默认继承父目录访问控制
/var/www/abc #拒绝所有人访问
/var/www/abc/test #拒绝所有人访问
/opt #拒绝所有人访问
/opt/nsd #单独设置允许
/opt/pub #拒绝所有人访问
<Directory "/var/www">
Require all granted #允许所有人
</Directory>
Require all denied #拒绝所有人
Require ip 172.25.0.10 #仅允许172.25.0.10进行访问
###################################################
案例:修改网站server0.example.com的网页文件路径为/webroot
]# mkdir /webroot
]# echo ‘<h1>wo shi webroot’ > /webroot/index.html
]# cat /webroot/index.html
[root@server0 ~]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName server0.example.com
DocumentRoot /webroot #修改存放网页路径
</VirtualHost>
[root@server0 ~]# vim /etc/httpd/conf/httpd.conf
[root@server0 ~]# vim /etc/httpd/conf.d/nsd02.conf
<Directory "/webroot"> #针对于/webroot进行策略配置
Require all granted #允许所有人访问
</Directory>
[root@server0 ~]# systemctl restart httpd
[root@server0 ~]# setenforce 0 #修改SELinux状态
[root@server0 ~]# getenforce #查看SELinux状态
#####################################################
站点访问控制
文件夹权限
针对DocumentRoot 页面目录的权限控制
- http运行身份(用户/组):apache
使用配置区段
- 每个文件夹自动继承其父目录的ACL访问权限
- 除非针对子目录有明确设置
<Directory 目录的绝对路径>
.. ..
Require all denied | granted
Require ip IP或网络地址
\</Directory>
案例,在DocumentRoot 目录下建立private目录只有server0可访问
selinux
三大策略
- bool值
- 安全上下文
- 非默认端口开放
安全上下文:为所有重点数据打上标签
semanage fcontext -l上下文类型
ls -Z
增加新的web目录
- chcon 【-R】 --reference=模板 新目录
- semanage fcontext -a -t httpd_sys_content_t ‘新目录(/.*)?’
restorecon -R /webroot/