web网站服务(二)

简介: web网站服务(二)

httpd访问控制

       为了更好地控制对网站资源的访问,可以为特定的网站目录添加访问授权。

🥓作用

控制对网站资源的访问

为特定的网站目录添加访问授权

常用访问控制方式

客户机地址限制

用户授权限制

🥓基于客户端地址的访问控制

       使用Require配置项实现访问控制,按先后顺序限制 可用于<Location>、<Directory>、<Files>、<Limit>配置段中, 注:not表示拒绝

🥓用户授权限制

创建用户认证数据库

添加用户授权配置

验证用户访问授权

🥓虚拟Web主机

在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机。

🥓httpd支持的虚拟主机类型

基于域名的虚拟主机

基于IP地址的虚拟主机

基于端口的虚拟主机

实验步骤

客户机地址限制

Require配置项的常见语法

Require all granted——表示允许所有主机访问。

Require all denied——表示拒绝所有主机访问。

Require local——表示仅允许本地主机访问。

Require [not] host <主机名或域名列表>

Require [not] ip <ip地址或网段列表>

🍓注:not表示拒绝

       通常情况下,网站服务器是对所有客户机开放的,网页文档目录未做任何限制,因此使用的是Require all granted策略,表示允许从任何客户机访问,具体配置如下。

1. vim /usr/local/httpd/conf/httpd.conf
2. 文本下搜索 
3. <Directory "/usr/local/httpd/htdocs">
4.  ......//省略部分内容
5.  Require all granted         //添加(默认有)
6.  </Directory>

       若只希望 禁止来自一个内网网段和一个IP地址。但允许其他任何主机访问,可以使用如下限制策略。

1. vim /usr/local/htpd/conf/httpd.conf
2.  搜索 <Directory "/usr/local/httpd/htdocs">
3. <RequireAll>                    //加
4. Require all granted
5. Require not ip 192.168.1.10 192.168.2.0/24       //添加要禁止的网段或主机
6. </RequireAll>                   //加
7. </Directory>

       未做路径优化的重启apachectl服务

/usr/local/httpd/bin/apachectl restart

       重启后,未被授权的客户机访问网站目录时,将会拒接访问。

        因为本机地址为1.100,客户机1.10所以访问被拒绝。修改成1.0网段没有地址冲突的地址即可访问。

       修改地址后可以访问的默认网页

用户授权限制

       基于用户的访问控制包含认证(Authentication)和授权(Authorization)两个过程,是Apache允许指定用户使用用户名的密码访问特定资源的一种方式。

       httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。使用摘要认证需要在编译httod之前添加“--enable-auth-digest” 选项,但并不是所有的浏览器都支持摘要认证;而基本认证是httpd服务的基本功能,不需要预先配置特别选项。

创建用户认证数据文件

       httpd的基本认证通过校验用户名,密码组合来判断是否允许用户访问。使用专门的htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账号。

       使用htpasswd工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建此文件。

       创建zhang3用户,/.awspwd为存放目录,新密码输入两次。

1.  [root@localhost ~]# cd /usr/local/httpd
2.  [root@localhost httpd]# bin/htpasswd -c /usr/local/httpd/conf/.awspwd zhang3
3.  New password: 
4.  Re-type new password: 
5.  Adding password for user zhang3
6.  [root@localhost httpd]# cat /usr/local/httpd/conf/.awspwd 
7.  zhang3:$apr1$T1/SEmVK$k7VqIYih78oHFcfst3a.B/

       已创好/.awpwd目录后创建用户取消“-c”选项,创建li4用户

1.  [root@localhost httpd]# bin/htpasswd /usr/local/httpd/conf/.awspwd li4
2.  New password: 
3.  Re-type new password: 
4.  Adding password for user li4
5.  [root@localhost httpd]# cat /usr/local/httpd/conf/.awspwd 
6.  zhang3:$apr1$T1/SEmVK$k7VqIYih78oHFcfst3a.B/
7.  li4:$apr1$SLNy2tvP$H36ifUr/wsz.klI1cY1bt0

添加用户授权配置

       有了授权用户之后还需要修改httpd.conf 配置文件,在特定的目录区域中添加授权配置,以启用基本认证并配置允许哪些用户访问。例如,若只允许.awspwd 数据文件中的任何一用户访问网页,可以执行以下操作。

🍓注:客户机地址限制的配置需要Require all granted改成Require all denied或者注释掉。

1. <RequireAll>
2. # Require all granted                // 加#号注释掉,其他不用改
3.  Require not ip 192.168.1.10 192.168.2.0/24
4. </RequireAll>
1. [root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
2.  搜索此文件 <Directory "/usr/local/httpd/htdocs">
3.  ......省略部分
4. 输入以下四行配置
5. authname "123.com"
6. authtype basic
7. authuserfile /usr/local/httpd/conf/.awspwd
8. require valid-user
9.  [root@localhost ~]# systemctl restart httpd.service

上述配置文件内容中,相关配置项的含义如下:

authname:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。

authtype:设置认证的类型,basic表示基本认证。

authuserfile:设置用于保存用户账号,密码的认证文件路径。

require valid-user:要求只有认证文件中的合法用户才能访问。

        🍓需要注意的是,用户访问授权与主机访问控制同时设置时,设置的主机访问控制优先生效。

验证用户访问授权

当再次访问网站的默认首页时,浏览器会首先弹出认证对话框。

构建虚拟web主机

基于域名的虚拟主机:相同IP,相同端口号,不同域名。

基于IP地址的虚拟主机: 不同IP相同端口。

基于端口的虚拟主机: 相同IP,相同域名,不同端口号。

基于域名的虚拟主机

  • 为虚拟主机提供域名解析

        🥠安装DNS

没有DNS需要安装,有的话可省略此部分

挂载系统盘安装源码包

1. [root@localhost ~]# mount /dev/cdrom /media
2. mount: /dev/sr0 写保护,将以只读方式挂载
3. [root@localhost ~]# cd /media/Packages/
4. [root@localhost Packages]# rpm -ivh bind-9.9.4-37.el7.x86_64.rpm bind-chroot-9.9.4-37.el7.x86_64.rpm

主配置文件

[root@localhost ~]# vim /etc/named.conf

配置如图,将红框中的两行删除

添加两个区域

1. zone "123.com" in {
2. type master;
3.         file "123.com.zone";
4. };
5. zone "456.com" in {
6. type master;
7.         file "456.com.zone";
8. };
9.

区域数据1文件(正向)

[root@localhost ~]# vim /var/named/123.com.zone

文件内配置

1. $ttl 86400
2. @ in    soa     123.com.        admin.123.com. (
3. 201801
4. 3h
5. 15m
6. 1w
7. 1d
8. )
9. in      ns      ns1.123.com.
10. ns1     in      a       192.168.1.100
11. www     in      a       192.168.1.100

区域数据2文件(正向)

[root@localhost ~]# vim /var/named/456.com.zone

文件内配置

1. $ttl 86400
2. @ in soa        456.com.      admin.456.com. (
3.        202253
4.        3h
5.        15m
6.        1w
7.        1d
8. )
9.        in      ns      ns1.456.com.
10. ns1     in      a       192.168.1.100
11. www     in      a       192.168.1.100

重启服务

systemctl   restart named

排错(OK直接跳过)

检查/etc/named.conf文件:

named-checkconf  -z   /etc/named.conf

检查正向和反向数据文件:

named-checkzone  123.com  /var/named/123.com.zone

为每个虚拟web主机准备网站目录及网页文档。

1. [root@localhost ~]# mkdir -p /var/www/html/123com
2. [root@localhost ~]# mkdir -p /var/www/html/456com
3. [root@localhost ~]# echo "<h1>www.123.com</h1>" > /var/www/html/123com/index.html
4. [root@localhost ~]# echo "<h1>www.456.com</h1>" > /var/www/html/456com/index.html

添加虚拟主机配置

1. [root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
2. 
3.  <VirtualHost *:80>                                   虚拟站点区域          
4.      ServerAdmin 123@.com                            邮箱
5.      DocumentRoot "/var/www/html/123com"             网站根目录 
6.      ServerName www.123.com                          完整名称(别名)
7.      ErrorLog "logs/www.123.com-error_log"           错误日志
8.      CustomLog "logs/www.123.com-access_log" common  访问日志
9.      <directory "/var/www/html">                     设置访问权限
10.      require all granted
11.      </directory>
12.  </VirtualHost>
13.  
14.  <VirtualHost *:80>
15.      ServerAdmin 456@.com
16.      DocumentRoot "/var/www/html/456com"
17.      ServerName www.456.com
18.      ErrorLog "logs/www.456.com-error_log"
19.      CustomLog "logs/www.456.com-access_log" common
20.      <directory "/var/www/html">
21.      require all granted
22.      </directory>
23.  </VirtualHost>

加载独立的配置文件

1.  [root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
2.  # nclude conf/extra/httpd-vhosts.conf   取消#注释

重启服务

/usr/local/httpd/bin/apachectl restart

在本机访问虚拟web主机。注意,这里要在本地主机访问,如果在其他服务器需要修改本地hosts文件

基于IP地址的虚拟主机

       对于基于IP地址的虚拟主机,每个虚拟web主机各自使用不同的IP地址,但是都通过同一台httpd服务器对外提供web浏览服务。

虚拟机临时配置IP命令如下

1. [root@localhost ~]# ifconfig ens33:2 192.168.1.200
2.  [root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
3.  
4.  插入模式下网站1(不同地址相同端口)
5.  <VirtualHost *:80>改成<VirtualHost 192.168.1.100:80>
6.          网站2
7. <VirtualHost *:80>改成 <VirtualHost 192.168.1.200:80>
8.  加载独立的配置文件
9.  [root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
10.  # nclude conf/extra/httpd-vhosts.conf   取消#注释
11.  [root@localhost ~]# systemctl restart httpd

在客户机上访问虚拟web主机

基于端口的虚拟主机

       基于端口的虚拟机通常只用于同一个web站点,其针对的网站名称、、IP地址往往都是相同的,但 通过不同的TCP端口来提供不同网页内容的服务入口。

       配置基于端口的虚拟web主机时,需要通过多个 Listen配置项来指定要监听的TCP端口号,每个虚拟web主机的VirtualHost配置中应同时指定IP地址和端口号。

         🍓特别注意的是基于端口的虚拟主机需要监听端口号,如Listen 80。

1. [root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
2.  <VirtualHost 192.168.1.100:80>  加端口号
3.    ......
4.  
5.  <VirtualHost 192.168.1.100:8080>
6.    ......
7. #在最后面空白地方加,不要加在模块内
8.  Listen 80                       监听80端口
9.  Listen 8080                     监听8080端口

    加载独立的配置文件并重启

1. [root@localhost ~]# vim //usr/local/httpd/conf/httpd.conf
2.  # nclude conf/extra/httpd-vhosts.conf   取消#注释
3.  [root@localhost ~]# systemctl restart httpd

访问时,默认是80端口,第二个网站需要添加8080端口。


相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
17小时前
|
Java API 数据库
利用Java构建高性能的RESTful Web服务
在现代软件开发中,RESTful Web服务已成为一种流行的架构模式,用于构建可扩展、可维护的网络应用。本文将探讨如何使用Java编程语言及其相关框架(如Spring Boot)来构建高性能的RESTful Web服务。我们将不仅仅关注基本的RESTful API设计,还将深入讨论性能优化、安全性、以及服务扩展性等方面的技术细节。通过本文,读者将能够掌握构建高效RESTful Web服务的核心技术和实践。
|
4天前
|
缓存 监控 API
利用Python构建高性能的Web API后端服务
随着微服务架构的普及和RESTful API的广泛应用,构建高性能、可扩展的Web API后端服务变得尤为重要。本文将探讨如何利用Python这一强大且灵活的语言,结合现代Web框架和工具,构建高效、可靠的Web API后端服务。我们将分析Python在Web开发中的优势,介绍常用的Web框架,并通过实际案例展示如何设计并实现高性能的API服务。
|
5天前
|
存储 缓存 前端开发
揭秘Web缓存:提升网站性能与用户体验
揭秘Web缓存:提升网站性能与用户体验
|
6天前
|
SQL 云安全 安全
常见的web漏洞,网站漏洞该怎么办
随着互联网的发展,网站安全成为企业和个人关注焦点,尤其网站漏洞可能导致数据泄露、系统崩溃等严重后果。本文介绍了四种常见网站漏洞:XSS、SQL注入、文件包含和CSRF,以及它们的危害。为解决这些问题,建议加强代码审查、输入验证、使用安全API和库、访问控制等措施。此外,德迅云安全的漏洞扫描VSS服务可在Web漏洞扫描、弱密码扫描和中间件扫描等场景中发挥作用,帮助企业及时发现并处理安全问题,保障网站安全。
|
6天前
|
XML 存储 安全
LabVIEWCompactRIO 开发指南23 Web服务
LabVIEWCompactRIO 开发指南23 Web服务
13 0
|
6天前
|
JSON 监控 安全
LabVIEW测试和调试Web服务
LabVIEW测试和调试Web服务
16 1
|
6天前
|
JSON 数据格式 Windows
LabVIEW创建Web服务
LabVIEW创建Web服务
11 0
|
6天前
|
网络协议 关系型数据库 Linux
使用PHPStudy搭建本地web网站并实现任意浏览器公网访问
使用PHPStudy搭建本地web网站并实现任意浏览器公网访问
15 0
|
6天前
|
应用服务中间件 nginx
如何在树莓派部署Nginx并实现无公网ip远程访问内网制作的web网站
如何在树莓派部署Nginx并实现无公网ip远程访问内网制作的web网站
12 0
|
6天前
|
开发框架 JavaScript 安全
WIndows Server 2016 部署 Web服务(简单篇)
WIndows Server 2016 部署 Web服务(简单篇)