1. 虚拟主机
在apache应用过程中,管理员经常需要对apache下的目录做一些限制,不希望所有用户都能访问该目录下的文件,只对指定用户访问,此时我们就要用到apache的权限功能。通过虚拟主机的方式,实现以不同的网卡,不同ip,提供多个服务(三种方式:基于域名、基于ip、基于端口,也可以混合搭建)。
1.1 基于域名的访问控制
[root@server ~]# echo "192.168.152.130 www.aaa.com" >> /etc/hosts
[root@server ~]# echo "192.168.152.130 www.bbb.com" >> /etc/hosts
[root@server ~]#
[root@server ~]# mkdir -p /var/www/html/aaa
[root@server ~]# mkdir -p /var/www/html/bbb
[root@server ~]#
[root@server ~]# echo "<h1>www.aaa.com</h1>" > /var/www/html/aaa/index.html
[root@server ~]# echo "<h1>www.bbb.com</h1>" > /var/www/html/bbb/index.html
[root@server ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.152.130:80>
DocumentRoot "/var/www/html/aaa"
ServerName www.aaa.com
ErrorLog "logs/aaa.com-error_log"
CustomLog "logs/aaa.com-access_log" common
</VirtualHost>
<VirtualHost 192.168.152.130:80>
DocumentRoot "/var/www/html/bbb"
ServerName www.bbb.com
ErrorLog "logs/bbb.com-error_log"
CustomLog "logs/bbb.com-access_log" common
</VirtualHost>
<Directory "/var/www/html">
Options None
AllowOverride None
Require all granted
</Directory>
[root@server ~]# vim /usr/local/httpd/conf/httpd.conf
#大概第480行左右,取消下面的#号符号
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
在虚拟机终端 打开火狐浏览器
访问 www.aaa.com 和 www.bbb.com
1.2 基于ip地址的访问控制
[root@server ~]# ifconfig ens33:0 192.168.152.152 netmask 255.255.255.0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.152.152 netmask 255.255.255.0 broadcast 192.168.152.255
ether 00:0c:29:16:8d:76 txqueuelen 1000 (Ethernet)
[root@server ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.152.130:80>
DocumentRoot "/var/www/html/aaa"
ServerName www.aaa.com
ErrorLog "logs/aaa.com-error_log"
CustomLog "logs/aaa.com-access_log" common
</VirtualHost>
<VirtualHost 192.168.152.152:80>
#修改为虚拟网卡的IP地址
DocumentRoot "/var/www/html/bbb"
ServerName www.bbb.com
ErrorLog "logs/bbb.com-error_log"
CustomLog "logs/bbb.com-access_log" common
</VirtualHost>
<Directory "/var/www/html">
Options None
AllowOverride None
Require all granted
</Directory>
[root@server ~]# vim /usr/local/httpd/conf/httpd.conf
Listen 192.168.152.130:80
Listen 192.168.152.152:80
#增加一个监听的地址
#Listen 80
1.2 基于端口的访问控制
[root@server ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.152.130:80>
DocumentRoot "/var/www/html/aaa"
ServerName www.aaa.com
ErrorLog "logs/aaa.com-error_log"
CustomLog "logs/aaa.com-access_log" common
</VirtualHost>
<VirtualHost 192.168.152.130:80>
#将地址改为原样,修改端口号为8080
DocumentRoot "/var/www/html/bbb"
ServerName www.bbb.com
ErrorLog "logs/bbb.com-error_log"
CustomLog "logs/bbb.com-access_log" common
</VirtualHost>
<Directory "/var/www/html">
Options None
AllowOverride None
Require all granted
</Directory>
[root@server ~]# vim /usr/local/httpd/conf/httpd.conf
Listen 192.168.152.130:80
Listen 192.168.152.130:8080
#Listen 80
2.保持连接
Apache 保持连接就是尽量地保持客户端的连接,通过一个TCP连接传送多个HTTP请求响应,对于客户端可以提高50%以上的响应时间,对于服务器可以降低建立与关闭连接时的资源消耗。
1tcp - 1次http
1tcp - 多次http
2.1 保持连接方式
Apache连接相关参数:
配置文件:
vim /usr/local/httpd/conf/extra/httpd-default.conf
KeepAlive
是否打开连接保持,OFF关闭,ON打开
KeepAliveTimeout
一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开
MaxKeepAliveRequests
一次连接能够传输的最大请求数量
3. 日志分割
随着网站的访问量增大,默认情况下Apache的单个日志文件也会越来越大
会存在日志文件占用磁盘空间很大,以及查看相关信息不方便这些问题,为了解决这些问题,所以我们要做到的操作就是对日志文件进行分割,Apache自带rotatelogs分割工具实现这一要求
查看rotatelogs的所在位置:
[root@server ~]# which rotatelogs
/usr/local/bin/rotatelogs
查看目录下面的日志文件:
[root@server ~]# ls /var/log/httpd/
access_log error_log
修改主配置文件,设置按天分割日志,格式%Y%m%d=年月日.log
275行,在下面添加内容
ErrorLog "logs/error_log"
ErrorLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/aaa.com-error_log_%Y%m%d.log 86400"
305行,在下面添加内容
CustomLog "logs/access_log" common
CustomLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/aaa.com-access_%Y%m%d.log 86400" combined
[root@server ~]# ls /var/log/httpd/
access_log error_log
重启服务,验证错误日志已产生:
修改系统时间,验证是否产生日志文件:
[root@server ~]# date
2021年 06月 20日 星期日 16:04:47 CST
[root@server ~]# date -s 20210620
2021年 06月 20日 星期日 00:00:00 CST
[root@server ~]# date -s 15:18:00
2021年 06月 20日 星期日 15:18:00 CST
[root@server ~]# ls /var/log/httpd/
aaa.com-error_log_20210620.log access_log error_log
#发现多出了1个文件,是网站名+日期的日志文件