Web网站服务(二)

1、客户机地址限制。

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

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

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

Require [not] host <主机名或域名列表>:表示允许或拒绝指定主机或域访问。

Require [not] ip<ip ip地址或网段列表>:表示允许或拒绝指定IP地址或网段访问。

通常情况下,网站服务器是对所有客户机开放的,网页文档目录并未做任何限制,因此使用的是"Require all granted"策略,表示允许任何客户机访问。配置文件路径:[ /usr/local/httpd/conf/httpd.conf ]

定义限制策略时,多个不带not的Require配置语句之间是"或"的关系,即任意一条Require配置语句满足条件均可以访问。

若只希望IP地址为192.168.136.1的主机能够访问/usr/local/httpd/htdocs网页目录下的内容,则需要配置以下内容。配置文件路径:[ /usr/local/httpd/conf/httpd.conf ]

若希望禁止网段访问,需要修改以下配置

当未被授权的客户机访问时,将会被拒绝访问,注意:修改配置文件后均需要重启服务

2、 用户授权限制。

httpd服务支持使用摘要认证(Digest)和基本认证(Basic)两种方式,使用摘要认证需要在编译httpd之前添加"--enable-auth-digest"选项。

2.1、创建用户认证数据文件。

httpd的基本认证通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用户账户需要事先建立,并保存在固定的数据文件中。使用专门的htpasswd工具程序,可以创建授权用户数据文件

[root@yang ~]# cd /usr/local/httpd/

##使用/bin/目录下的执行文件htpasswd创建一个名为webadmin的用户,并且存放在.awspwd的隐藏文件中
[root@yang httpd]# bin/htpasswd -c /usr/local/httpd/conf/.awspwd webadmin
New password: 
Re-type new password: 
Adding password for user webadmin

##查看.awspwd隐藏文件中的内容
[root@yang httpd]# cat /usr/local/httpd/conf/.awspwd 
webadmin:$apr1$71qWzdG2$FKS/43H0XO4GQxyCkfCok1

因为上面创建webadmin的时候也创建好了.awspwd隐藏文件,所有下次创建用户时,就不需要"-c"选项了

[root@yang httpd]# bin/htpasswd /usr/local/httpd/conf/.awspwd bdqn
New password: 
Re-type new password: 
Adding password for user bdqn

[root@yang httpd]# cat /usr/local/httpd/conf/.awspwd 
webadmin:$apr1$71qWzdG2$FKS/43H0XO4GQxyCkfCok1
bdqn:$apr1$9uU9mL67$ieD7/J6O.zPmU8GeQtVs11

2.2、添加用户授权配置。

有了授权用户账户后,还需要修改httpd.conf配置文件,在特定的目录区域中添加授权配置。

[root@yang ~]# vim /usr/local/httpd/conf/httpd.conf 

<Directory "/usr/local/httpd/htdocs">
    Require all granted
    AuthName " DocumentRoot "
    AuthType Basic
    AuthUserFile /usr/local/httpd/conf/.awspwd
    Require valid-user
</Directory>

[root@yang ~]# systemctl restart httpd  //重启服务

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

AuthType:设置认证的类型,Basic表示基本认证。
AuthUserFile:设置用于保存用户账号,密码的认证文件路径。
Require valid-user:要求只有认证文件中的合法用户才能访问。其中,valid---user表示所有

注意:主机访问控制中所允许的主机可以直接访问网站,不需要用户授权。主机访问控制中所禁止的主机则不可以直接访问网站,需要进行用户授权。

3、构建虚拟Web主机。

虚拟Web主机指的是在同一台服务器中允许多个Web站点,其中的每个站点实际上并不独立占用整个服务器。

使用httpd可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的Web站点。httpd支持的虚拟主机类型包括三种: 基于域名、基于IP地址、基于端口

3.1、为虚拟主机提供域名解析。

3.2、 为虚拟主机准备网页文档。

为每个虚拟Web主机准备网站目录即网页文档以方便测试。在/var/www/html目录下创建两个子文件夹作为网站根目录。

[root@yang ~]# mkdir -p /var/www/html/benetcom
[root@yang ~]# mkdir -p /var/www/html/accpcom

[root@yang ~]# echo "<h1>www.benet.com</h1>" > /var/www/html/benetcom/index.html
[root@yang ~]# echo "<h1>www.accp.com</h1>" > /var/www/html/benetcom/index.html

3.3、添加虚拟主机配置。

[root@yang ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 

<VirtualHost *:80>
    ServerAdmin webmaster@benet.com
    DocumentRoot "/var/www/html/benetcom"
    ServerName benet.com
    ErrorLog "logs/www.benet.com-error_log"
    CustomLog "logs/www.benet.com-access_log" common
    <Directory "/var/www/html">
    Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@accp.com
    DocumentRoot "/var/www/html/accpcom"
    ServerName accp.com
    ErrorLog "logs/www.accp.com-error_log"
    CustomLog "logs/www.accp.com-access_log" common
    <Directory "/var/www/html">
    Require all granted
    </Directory>
</VirtualHost>

修改httpd.conf配置文件

[root@yang ~]# vim /usr/local/httpd/conf/httpd.conf 

重启服务使新配置生效

[root@yang ~]# systemctl restart httpd

3.4、在客户机中访问虚拟Web主机。

修改客户机的DNS为服务器的IP地址

3.5、基于IP地址的虚拟主机。

[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 

<VirtualHost 192.168.136.24:80>
    ServerAdmin webmaster@benet.com
    DocumentRoot "/var/www/html/benetcom"
    ServerName benet.com
    ErrorLog "logs/www.benet.com-error_log"
    CustomLog "logs/www.benet.com-access_log" common
    <Directory "/var/www/html">
    Require all granted
    </Directory>
</VirtualHost>

<VirtualHost 192.168.136.55:80>
    ServerAdmin webmaster@accp.com
    DocumentRoot "/var/www/html/accpcom"
    ServerName accp.com
    ErrorLog "logs/www.accp.com-error_log"
    CustomLog "logs/www.accp.com-access_log" common
    <Directory "/var/www/html">
    Require all granted
    </Directory>
</VirtualHost>

[root@localhost ~]# systemctl restart httpd.service  //重启服务

5.4、基于端口的虚拟主机。

<VirtualHost 192.168.136.55:8001>
    ServerAdmin webmaster@benet.com
    DocumentRoot "/var/www/html/benetcom"
    ServerName benet.com
    ErrorLog "logs/www.benet.com-error_log"
    CustomLog "logs/www.benet.com-access_log" common
    <Directory "/var/www/html">
    Require all granted
    </Directory>
</VirtualHost>

<VirtualHost 192.168.136.55:8000>
    ServerAdmin webmaster@accp.com
    DocumentRoot "/var/www/html/accpcom"
    ServerName accp.com
    ErrorLog "logs/www.accp.com-error_log"
    CustomLog "logs/www.accp.com-access_log" common
    <Directory "/var/www/html">
    Require all granted
    </Directory>
</VirtualHost>

Listen 8001
Listen 8000

[root@localhost ~]# systemctl restart httpd.service  //重启服务
相关推荐
韩楚风2 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学2 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO2 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu72 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我2 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、2 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程2 小时前
Linux中环境变量
linux
挥剑决浮云 -3 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
小O_好好学4 小时前
CentOS 7文件系统
linux·运维·centos
x晕x5 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器