apache 配置与应用以及网页优化

news2024/11/26 5:50:24

Apache 配置与应用

--------构建虚拟 Web 主机--------
虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web 主机。
通过虚拟 Web 主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。

使用httpd服务可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的Web站点。
Apache虚拟主机相当于一个在同一台服务器中却相互独立的站点,从而实现一台主机对外提供多个 web 服务,每个虚拟主机之间是独立的,互不影响的。

httpd服务支持的虚拟主机类型包括以下三种:
1.基于域名:为每个虚拟主机使用不同的域名,但是其对应的 IP 地址是相同的。
例如,www.benet.com 和 www.accp.com 站点的 IP 地址都是 192.168.80.10。这是使用最为普遍的虚拟 Web 主机类型。

2.基于IP地址:为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。

3.基于端口:这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用了不同的TCP端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。


--------基于域名的虚拟主机--------
1.为虚拟主机提供域名解析
方法一:部署DNS域名解析服务器 来提供域名解析

方法二:在/etc/hosts 文件中临时配置域名与IP地址的映射关系
echo "192.168.80.10 www.benet.com" >> /etc/hosts
echo "192.168.80.10 www.accp.com" >> /etc/hosts

2.为虚拟主机准备网页文档
mkdir -p /var/www/html/benet
mkdir -p /var/www/html/accp
echo "<h1>www.benet.com</h1>" > /var/www/html/benet/index.html
echo "<h1>www.accp.com</h1>" > /var/www/html/accp/index.html

3.添加虚拟主机配置
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf            #源码编译安装的虚拟主机配置文件路径
#vim /etc/httpd/conf.d/vhosts.conf        #RPM或YUM安装的虚拟主机配置文件路径

<VirtualHost 192.168.80.10:80>                                #设置虚拟主机配置区域
#    ServerAdmin webmaster@dummy-host.example.com            #设置管理员邮箱,这行可忽略
    DocumentRoot "/var/www/html/benet"                        #设置网站根目录
    ServerName www.benet.com                                #设置Web站点的完整域名(主机名+域名)
#    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/benet.com-error_log"                        #设置错误日志文件的路径
    CustomLog "logs/benet.com-access_log" common            #设置访问日志文件的路径
</VirtualHost>

<VirtualHost 192.168.80.10:80>                    
    DocumentRoot "/var/www/html/accp"            
    ServerName www.accp.com                    
    ErrorLog "logs/accp.com-error_log"            
    CustomLog "logs/accp.com-access_log" common
</VirtualHost>

4.设置访问控制
<Directory "/var/www/html">                                 #设置目录访问权限
    Options None                                            #不启用任何的服务器特性
    AllowOverride None                                        #不允许重写Apache默认配置    
    Require all granted                                        #允许所有主机访问
</Directory>

----------------------------------------------------------------------------------------------------------
Options指令解释:
Options指令的主要作用是控制特定目录将启用哪些服务器特性。可以在Apache服务配置文件的虚拟主机配置(VirtualHost)、特定目录配置(Directory)以及.htaccess文件中使用。
Options指令常用选项:
None:表示不启用任何的服务器特性。
FollowSymLinks:服务器允许在此目录中使用符号连接(软链接)。
Indexes:如果输入的网址对应服务器上的一个文件目录,而此目录中又没有Apache配置文件中的DirectoryIndex指令指定的文件(例如: DirectoryIndex index.html index.php),则列出该目录下的所有文件。
MultiViews:如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。例如,在服务器站点的file文件夹下中存在名为hello.jpg和hello.html的两个文件,此时用户输入 http://localhost/file/hello ,如果在 file文件夹下并没有 hello子目录,那么服务器将会尝试在 file目录下查找形如 hello.*的文件,然后根据用户请求的具体情况返回最匹配要求的 hello.jpg或者 hello.html。
All:表示除 MultiViews之外的所有特性。这也是Options指令的默认设置。

AllowOverride指令解释:
.htaccess(分布式隐含配置文件):提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含特定指令的文件,其中的指令作用于此目录及其所有子目录。
当AllowOverride设置成None时,相应的配置目录下的.htaccess文件是不被读取的,即无法生效。
当AllowOverride设置成All时,每一次请求访问相应目录下的文件时,都会读取.htaccess文件的配置,意味着原Apache指令会被.htaccess文件中的指令重写。
从性能和安全性考虑,一般都尽可能避免使用.htaccess文件,任何希望放在.htaccess文件中的配置,都可放在主配置文件(httpd.conf)的 <Directory>段中,而且高效。因此AllowOverride属性一般都配置成None 。

地址限制策略:
Require all granted:允许所有主机访问。
Require all denied:拒绝所有主机访问。
Require local:仅允许本地主机访问。
Require [not] host <主机名或域名列表>:允许或拒绝指定主机或域名访问。
Require [not] ip <IP 地址或网段列表>:允许或拒绝指定 IP 地址网络访问。

----------------------------------------------------------------------------------------------------------

5.加载独立的配置文件
vim /usr/local/httpd/conf/httpd.conf                        #源码编译安装的httpd服务主配置文件路径
--483行--取消注释
Include conf/extra/httpd-vhosts.conf                        #加载独立的配置文件

#vim /etc/httpd/conf/httpd.conf        #RPM或YUM安装的httpd服务主配置文件路径
IncludeOptional conf.d/*.conf        #最后一行已默认开启此项


systemctl restart httpd 

6.在客户机中访问虚拟 Web 主机
http://www.benet.com
http://www.accp.com


--------基于IP地址的虚拟主机--------
ifconfig ens33:0 192.168.80.100 netmask 255.255.255.0 

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.80.10:80>                    
    DocumentRoot "/var/www/html/benet"            
    ServerName www.benet.com                    
    ErrorLog "logs/benet.com-error_log"            
    CustomLog "logs/benet.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.80.100:80>                    
    DocumentRoot "/var/www/html/accp"            
    ServerName www.accp.com                    
    ErrorLog "logs/accp.com-error_log"            
    CustomLog "logs/accp.com-access_log" common
</VirtualHost>

<Directory "/var/www/html"> 
    Options None            
    AllowOverride None        
    Require all granted        
</Directory>

vim /usr/local/httpd/conf/httpd.conf    
--53行--插入
Listen 192.198.80.100:80


systemctl restart httpd 

在客户机中浏览器访问虚拟 Web 主机
http://192.168.80.10
http://192.168.80.100

--------基于端口的虚拟主机--------
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.80.10:80>                    
    DocumentRoot "/var/www/html/benet"            
    ServerName www.benet.com                    
    ErrorLog "logs/benet.com-error_log"            
    CustomLog "logs/benet.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.80.10:8080>                    
    DocumentRoot "/var/www/html/accp"            
    ServerName www.accp.com                    
    ErrorLog "logs/accp.com-error_log"            
    CustomLog "logs/accp.com-access_log" common
</VirtualHost>

<Directory "/var/www/html"> 
    Options None            
    AllowOverride None        
    Require all granted        
</Directory>

vim /usr/local/httpd/conf/httpd.conf    
--53行--插入
Listen 192.198.80.10:8080


systemctl restart httpd 

在客户机中浏览器访问虚拟 Web 主机
http://192.168.80.10:80
http://192.168.80.10:8080


--------Apache 连接保持--------
vim /usr/local/httpd/conf/extra/httpd-default.conf
KeepAlive On            #设置是否打开连接保持功能,后面接OFF表示关闭,接ON表示打开。可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时关闭此功能。

MaxKeepAliveRequests 100        #用于设置在一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接,最大值的设置决定于网站中网页的内容,一般设置数量会多于网站中所有的元素。

KeepAliveTimeout 5        #设置来自同一个客户端一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源。


--------构建Web虚拟目录与用户授权限制--------
1.创建用户认证数据文件
cd /usr/local/httpd/bin
./htpasswd -c /usr/local/httpd/conf/user zhangsan
./htpasswd /usr/local/httpd/conf/user lisi
#-c选项表示新建用户数据文件,缺省时则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码。

cat /usr/local/httpd/conf/user         #确认用户数据文件

2.添加用户授权配置
vim /usr/local/httpd/conf/httpd.conf
--末行添加--
Alias /test /var/www/html/test        #设置虚拟目录的根目录,/test为虚拟目录名称    
        
<Directory "/var/www/html/test">                #设置虚拟目录配置区域
    AuthName "Hello!"                            #定义受保护的领域名称,会在认证对话框中显示
    AuthType Basic                                #设置认证的类型,Basic表示基本认证
    AuthUserFile /usr/local/httpd/conf/user        #设置用于保存用户账号和密码的认证文件的路径
    Require valid-user                            #开启用户认证,只有认证文件中的合法用户才能访问
   #authgroupfile /usr/local/httpd/conf/group    #设置用于保存组账号和密码的认证文件的路径
   #Require user zhangsan                        #仅允许指定用户访问
   #Require group zhangsan                        #仅允许指定组访问        
</Directory>

3.验证用户访问授权
mkdir -p /var/www/html/test
echo "<h1>this is vdir test</h1>" > /var/www/html/test/index.html
systemctl restart httpd

在客户机中浏览器访问
http://192.168.80.10:80/test


--------Apache 日志分割--------
使用Apache 自带 rotatelogs 分割工具,将 Apache 的日志进行按每天的日期自动分割。
vim /usr/local/httpd/conf/httpd.conf
--275行--修改
ErrorLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400"        #分割错误日志
--305行--修改
CustomLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined    #分割访问日志

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
ErrorLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/benet.com-error_%F.log 86400"
CustomLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/benet.com-access_%F.log 86400" combined

#开头的 | 为管道符号。
#-l选项表示使用本地时间为时间基准。
#86400表示一天,即每天生成一个新的日志文件。

mkdir /var/log/httpd            #创建分割后的日志文件保存目录
systemctl restart httpd

浏览器访问
http://192.168.80.10
ls /var/log/httpd

--------AWStats 分析系统--------
AWStats 是使用Perl 语言开发的一款开源日志分析系统,它用来完成自动化的日志统计与分析工作。

1.将安装AWStats 所需软件包传到/opt目录下
awstats-7.6.tar.gz

2.安装 AWStats 软件包
cd /opt
tar zxvf awstats-7.6.tar.gz
mv /opt/awstats-7.6 /usr/local/awstats

3.为要统计的站点建立配置文件
cd /usr/local/awstats/tools
./awstats_configure.pl
......
Config file path ('none' to skip web server setup):
> /usr/local/httpd/conf/httpd.conf          #输入httpd服务主配置文件的路径
Your web site, virtual server or profile name:
> www.kgc.com                                  #输入要统计的站点域名

其它全部是y 或者 回车

3.修改自动生成的 awstats 访问权限,加载 CGI 模块(Apache 2.4 以上版本需要加载CGI 模块)
vim /usr/local/httpd/conf/httpd.conf
ErrorLog "logs/error_log"
CustomLog "logs/access_log" combined
......
--143行--
<IfModule !mpm_prefork_module>
    LoadModule cgid_module modules/mod_cgid.so        #取消注释
</IfModule>
<IfModule mpm_prefork_module>
    LoadModule cgi_module modules/mod_cgi.so        #取消注释
</IfModule>
......
--跳至末行修改--
<Directory "/usr/local/awstats/wwwroot">
    Options None
    AllowOverride None
    #Order allow,deny            #注释掉                    
    #Allow from all                #注释掉
    Require all granted            #添加
</Directory>


4.修改站点统计配置文件
vim /etc/awstats/awstats.www.kgc.com.conf
LogFile="/usr/local/httpd/logs/access_log"        #修改访问日志文件位置(由于日志格式问题,不能设置虚拟主机的日志)
DirData="/var/lib/awstats"                        #awstats目录默认不存在,需要手动创建


mkdir /var/lib/awstats

5.执行日志分析,并设置 cron 计划任务
systemctl restart httpd
cd /usr/local/awstats/tools/
./awstats_updateall.pl now      #更新数据(根据站点配置文件指定的日志文件路径获取日志数据)
#注意,更新数据前最好先把access.log文件清空后重新访问站点,再获取日志数据。

crontab -e
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now

systemctl start crond

6.访问 AWStats 分析系统站点
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

echo "192.168.80.10 www.kgc.com" >> /etc/hosts
浏览器访问
http://www.kgc.com/awstats/awstats.pl?config=www.kgc.com

7.优化网页地址
vim /usr/local/httpd/htdocs/aws.html
<html>
<head>
<meta http-equiv=refresh content="0;url=http://www.kgc.com/awstats/awstats.pl?config=www.kgc.com">
</head>
<body></body>
</html>

Apache 网页与安全优化
在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代。
为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容。

--------网页压缩--------
1.检查是否安装 mod_deflate 模块
apachectl -t -D DUMP_MODULES | grep "deflate"

2.如果没有安装mod_deflate 模块,重新编译安装 Apache 添加 mod_deflate 模块
systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate                #加入mod_deflate 模块

make -j 4 && make install

3.配置 mod_deflate 模块启用
vim /usr/local/httpd/conf/httpd.conf
--52行--修改
Listen 192.198.80.10:80
--105行--取消注释
LoadModule deflate_module modules/mod_deflate.so        #开启mod_deflate 模块
--197行--取消注释,修改
ServerName www.kgc.com:80
--末行添加--
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png    #代表对什么样的内容启用gzip压缩
DeflateCompressionLevel 9            #代表压缩级别,范围为1~9
SetOutputFilter DEFLATE                #代表启用deflate 模块对本站点的输出进行gzip压缩
</IfModule>

4.检查安装情况,启动服务
apachectl -t            #验证配置文件的配置是否正确
apachectl -t -D DUMP_MODULES | grep "deflate"        #检查 mod_deflate 模块是否已安装
  deflate_module (shared)                            #已安装的正确结果

systemctl start httpd.service

5.测试 mod_deflate 压缩是否生效
cd /usr/local/httpd/htdocs
先将game.jpg文件传到/usr/local/httpd/htdocs目录下
vim index.html
<html><body><h1>It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!</h1>
<img src="game.jpg"/>
</body></html>

方法一:
在Linux系统中,打开火狐浏览器,右击点查看元素
选择 网络 ---> 选择 HTML、WS、其他 
访问 http://192.168.80.10 ,双击200响应消息查看响应头中包含 Content-Encoding: gzip

方法二:
在Windows系统中依次安装 Microsoft.NET4 和fiddler 软件,打开fiddler 软件
选择 inspectors ---> 选择 Headers
浏览器访问 http://192.168.80.10 ,双击200响应消息查看 Content-Encoding: gzip


--------网页缓存--------
1.检查是否安装 mod_expires 模块
apachectl -t -D DUMP_MODULES | grep "expires"

2.如果没有安装mod_expires 模块,重新编译安装 Apache 添加 mod_expires模块
systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak1

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires            #加入mod_expires 模块

make && make install

3.配置 mod_expires 模块启用
vim /usr/local/httpd/conf/httpd.conf
--52行--修改
Listen 192.198.80.10:80
--111行--取消注释
LoadModule expires_module modules/mod_expires.so        #开启mod_expires 模块
--199行--取消注释,修改
ServerName www.kgc.com:80
--末行添加--
<IfModule mod_expires.c>
  ExpiresActive On                                #打开网页缓存功能
  ExpiresDefault "access plus 60 seconds"        #设置缓存60秒
</IfModule>

4.检查安装情况,启动服务
apachectl -t            #验证配置文件的配置是否正确
apachectl -t -D DUMP_MODULES | grep "expires"        #检查 mod_deflate 模块是否已安装
  deflate_module (shared)                            #已安装的正确结果

systemctl start httpd.service

5.测试缓存是否生效
cat /usr/local/httpd/htdocs/index.html

方法一:
在Linux系统中,打开火狐浏览器,右击点查看元素
选择 网络 ---> 选择 HTML、WS、其他 
访问 http://192.168.80.10 ,双击200消息查看响应头中包含 Expires 项

方法二:
在Windows系统中依次安装 Microsoft.NET4 和fiddler 软件,打开fiddler 软件
选择 inspectors ---> 选择 Headers
浏览器访问 http://192.168.80.10 ,双击200消息查看 Expires 项    


--------隐藏版本信息--------
vim /usr/local/httpd/conf/httpd.conf
--491行--取消注释
Include conf/extra/httpd-default.conf

vim /usr/local/httpd/conf/extra/httpd-default.conf
--55行--修改
ServerTokens Prod            #将原本的 Full 改为 Prod,只显示名称,没有版本
#ServerTokens 表示 Server 回送给客户端的响应头域是否包含关于服务器 OS 类型和编译过的模块描述信息。

systemctl restart httpd.service

浏览器访问 http://192.168.80.10 ,双击200消息查看 Server 项


--------Apache 防盗链--------
1.检查是否安装 mod_rewrite 模块
apachectl -t -D DUMP_MODULES | grep "rewrite"

2.如果没有安装mod_rewrite 模块,重新编译安装 Apache 添加 mod_rewrite模块
systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak2

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \                    #加入mod_rewrite 模块
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires

make && make install

3.配置 mod_rewrite 模块启用
vim /usr/local/httpd/conf/httpd.conf
--157行--取消注释
LoadModule rewrite_module modules/mod_rewrite.so
--224行--
<Directory "/usr/local/httpd/htdocs">
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted

  RewriteEngine On                                                     #打开 rewrite 功能,加入 mode_rewrite 模块内容
  RewriteCond %{HTTP_REFERER} !^http://kgc.com/.*$ [NC]                #设置匹配规则
  RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
  RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$ [NC]
  RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/$ [NC]
  RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/error.png        #设置跳转动作
</Directory>
----------------------------------------------------------------------------------------------------------
RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$ [NC]  的字段含义:
“%{HTTP_REFERER}” :存放一个链接的 URL,表示从哪个链接中转访问目录下的静态资源。
“!^” :表示不以后面的字符串开头。
“http://www.kgc.com” :是本网站的路径,按整个字符串匹配。
“.*$” :表示以任意字符结尾。
“[NC]” :表示不区分大小写字母。

RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/error.png  的字段含义:
“.” :表示匹配一个字符。
“*” :表示匹配 0 到多个字符,与“.”合起来的意思是匹配 0 到多次前面的任意字符,如果是 1 到多次匹配可以用“+”表示。
“\.” :在这里的“\”是转义符,“\.”就代表符号“.”的意思。因为“.”在指令中是属于规则字符,有相应的含义, 如果需要匹配,需要在前面加个转义符“\”,其它规则字符如果需要匹配,也做同样处理。
“(gif|jpg|swf)” :表示匹配“gif”、“jpg”、“swf”任意一个,“$”表示结束。最后的规则是以“.gif”、“.jpg”、“.swf”结尾, 前面是1到多个字符的字符串,也就是匹配图片类型的文件。
“http://www.kgc.com/error.png” :表示转发到这个路径 。

整个配置的含义是 使用本网站以外的网站域名 访问本站的图片文件时,显示 error.png 这个图片。
----------------------------------------------------------------------------------------------------------

4.网页准备
Web源主机配置:
cd /usr/local/httpd/htdocs
将game.jpg、error.png文件传到/usr/local/httpd/htdocs目录下
vim index.html
<html><body><h1>this is kgc.com!</h1>
<img src="game.jpg"/>
</body></html>

echo "192.168.80.10 www.kgc.com" >> /etc/hosts 
echo "192.168.80.12 www.benet.com" >> /etc/hosts 

盗链网站主机:
cd /usr/local/httpd/htdocs                #yum安装的httpd服务的默认路径为/var/www/html/
vim index.html
<html><body><h1>this is benet.com!</h1>
<img src="http://www.kgc.com/game.jpg"/>
</body></html>

遇到的细节注意:

Apache 读取数据库使用的文件:/usr/local/httpd/conf/httpd.conf

 

include包含,用include将httpd.conf配置项包含进来

默认情况下apache从根目录开始都禁止访问,在网页根目录设置一个 Require all granted

报错默认记录在:/var/log/messages

apache服务端口被占用

window的域名配置文件位置

 

Indexes属性 如果访问的目录中没有你访问的文件和设置的默认文件。将当前目录下所有文件和子目录列表形式列出

FollowSymLinks 识别软连接文件  一般与Indexes一起使用

重启network设置的虚拟网卡就会失效。不可systemctl restart network

脚本管理的,所以重启太快会报错,多重启两次就好

监听地址只写端口号代表任意地址

Listen 80

端口实现虚拟主机 IP地址可以一样,主机名也可以一样。

端口号可以随便设 不和其他端口冲突就行

链接保持(长连接):在一次tcp连接当中可以完成多个HTTP请求和响应

长时间的链接保持会占用链接资源

MaxKeepAliveRequests:一个网页中总共的选项数目,超过最大数量断开请求。

KeepAliveTimeou:最大连接时间设置多久没有请求就断开。

vim /usr/local/httpd/conf/httpd.conf

Include conf/extra/httpd-default.conf  

得开启配置项

脚本执行的容易报个小错,在/lib/systemd/system准备.service文件 这里面的配置不会出现bug

Web虚拟目录:

根目录

index.php是在网页根目录/var/www/html/benet下面的文件

 虚拟目录(虚拟目录)

 

网页换位置不需要重启,配置修改了需要重启或重载

日志分割,

/usr/local/bin/rotatelogs  通过该工具ratatelogs实现

对于将所有日志放在同一文件夹下,将每天的日志分开放更加便于查找。

利用日期来区分文件

Date:换显示形式:

echo $(date+%Y%m%d)

echo $(date+%Y-%m-%d)

一天有86400秒。

在配置日志分割的配置文件时,需要先关闭虚拟主机的配置文件:

#Include conf/extra/httpd-vhosts.conf

不然还需要修改虚拟主机配置,关掉后只修改主机配置

重启之前保证目录存在mkdir -pv /var/log/httpd

systemctl restart httpd报错,若是修改的配置文件遇到报错,

systemctl stop httpd

systemctl start httpd

Require all granted  允许所有主机访问

./htpasswd -c    新建文件

对于授权限制:

./htpasswd -c    新建一个授权文件保存用户账号和密码

文件存在后再添加别的用户就不需要再加-c选项

网页压缩:

mod_gzip 模块与mod deflate 模块·两者均使用gzip压缩算法,运作原理类似·mod deflate压缩速度略快,而mod gzip的压缩比略高·mod gzip对服务器CPU的占用要高一些高流量的服务器,使用mod deflate可能会比mod gzip 加载速度更快

压缩默认级别为6 越大越压缩小,但速度慢。范围一到九

标签content-enconding有这个就代表已经压缩了

网页缓存:

通过mod_expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面不需要向服务器再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的

测试没有得到目标结果,可以尝试清除缓存

隐藏版本配置Apache隐藏版本信息将主配置文件httpd.conf以下行注释去掉#Include conf/extra/httpd-default.conf修改httpd-default.conf文件ServerTokens Full 修改为 ServerTokens Prod重启httpd服务,访问验证信息

防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力

作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用

虚拟web主机(基于域名、IP、端口)

网页根目录 DocumentRoot

网页文件实际位置 DocumentRoot月录+URI路径

别名日录(虚拟目录) Alias

网页文件实际位置 Alias日录下的子目录/文件

apache 网页访问控制granted/deniedRequire  al1网页用户授权限制 htpass [-c]AuthUserFile日志分割rolatelogs

AuthTypeRequire valid-user

网页优化apache网页压缩deflate网页缓存

expires

隐藏版本号httpd-default .conf

ServerTokensProd

Yum安装的网页根目录在:/var/www/html下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

49.现有移动端开源框架及其特点—MACE( Mobile AI Compute Engine)

Mobile AI Compute Engine (MACE) 是一个专为移动端异构计算设备优化的深度学习前向预测框架 MACE覆盖了常见的移动端计算设备(CPU,GPU和DSP),并且提供了完整的工具链和文档,用户借助MACE能够很方便地在移动端部署深度学习模型MACE已经在小米内部广泛使用并且被充分验证具…

答疑——20年国赛题(JAVA解法)

题目链接&#xff1a;用户登录https://www.lanqiao.cn/problems/1025/learning/?page3&first_category_id1&sortstudents_count 题目描述 有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。 老师可以安排答疑的顺序&#xff0c;同学们要依次进入老…

SQL笔记(1)——MySQL创建数据库(收藏吃灰版)

本文详细记录MySQL创建一个数据库的过程&#xff0c;不只是构建步骤&#xff0c;更多的是每一步涉及到的知识点。一般创建数据库有两种方式&#xff0c;一种是命令&#xff0c;另外一种就是通过数据库管理工具&#xff0c;本文主要记录通过命令的方式创建&#xff1b; 后面的学…

Centos7升级make和gcc版本到最新

Background 遇到如下的问题可能就是你make和gcc的版本过低了&#xff0c;需要升级。 *** These critical programs are missing or too old: make compiler *** Check the INSTALL file for required versions. 1、更新make版本 下载最新版本 【make最新安装包下载地址】 #…

VuePress1.x使用及个人博客搭建

文章目录介绍快速开始安装目录页面配置介绍 VuePress 由两部分组成&#xff1a;一个以 Vue 驱动的主题系统的简约静态网站生成工具&#xff0c;和一个为编写技术文档而优化的默认主题。它是为了支持 Vue 子项目的文档需求而创建的。 快速开始 安装 首先需要安装Node.js &…

ASM字节码处理工具原理及实践(一)

1. ASM简介 我们知道程序的分析。生成和转换是很有用的技术&#xff0c;可以用于很多场景。ASM作为一个Java字节码处理工具&#xff0c;它被设计用于处理已编译的Java类。ASM不是生成和转变已编译的Java类的唯一工具&#xff0c;但它是最新且最有效的工具之一。特点是体积小&a…

一个实现跳转到更多页面的黏性交互的通用组件

本文字数&#xff1a;3344字预计阅读时间&#xff1a;9分钟背景和现状随着移动互联网的快速发展&#xff0c;通信费用大幅降低&#xff0c;信息爆炸&#xff0c;应用软件展示的信息越来越来&#xff0c;为了有效地组织和展示信息&#xff0c;各大移动平台都提供了列表滚动组件方…

No.038<软考>《(高项)备考大全》【第22章】信息安全管理

【第22章】信息安全管理1 考试相关2 信息安全管理2.1 安全策略2.2 信息系统安全等级保护2.3 安全的概念适度安全的观点&#xff1a;木桶效应的观点&#xff1a;2.4 安全策略设计2.5 信息安全系统工程能力成熟度模型ISSE-CMM2.6数字证书护照和签证2.7访问控制授权方案2.8 安全审…

评估数据质量的指标总结1

评估数据质量的指标总结1 1、RMSE&#xff08;root mean square error&#xff09;均方根误差 作用&#xff1a;RMSE是估计的度量值与“真实”值之间的距离的度量。 计算方法&#xff1a; 2、相关系数r(coefficient of correlation ) 作用&#xff1a;皮尔逊相关系数&#xff…

LeetCode算法小抄--二叉树的各种构造

LeetCode算法小抄--各种情况的构造二叉树构造二叉树构造最大二叉树[654. 最大二叉树](https://leetcode.cn/problems/maximum-binary-tree/)从前序与中序遍历构造二叉树[105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preord…

Unity和UE有啥区别?哪个更适合游戏开发

游戏制作软件中最著名的两个游戏引擎是 Unity 和 Unreal Engine。从独立游戏到大型工作室&#xff0c;许多游戏开发商都在使用它们。如果你打算从事游戏行业工作&#xff0c;你肯定曾经问过自己“我的游戏应该使用 Unity 还是 Unreal Engine&#xff1f;” ” 让我们来了解和比…

ActiveMQ使用(四):在JavaScript中发送的MQTT消息在SpringBoot中变为字节数组

ActiveMQ使用(四):在JavaScript中发送的MQTT消息在SpringBoot中变为字节数组 1. 问题描述 JmsListener(destination "test_producer", containerFactory "topicListenerContainer")public void receiveTestProducer(String message) throws JMSExceptio…

AI绘画兴起,Stable Diffusion脱颖而出,来一探究竟

近几年&#xff0c;AI图像生成风靡全球&#xff0c;它能够根据文字描述生成精美图像&#xff0c;这极大地改变了人们的图像创作方式。众多专业人士说该技术正在引领着新一轮深度学习创意工具浪潮&#xff0c;并有望彻底改变视觉媒体的创作。 AI绘画兴起 Stable Diffusion脱颖…

[Django] 后台管理系统

浏览之前&#xff0c;请先阅读以下文章 1.Django项目创建 2.Django路由系统 在项目目录下的urls.py文件中&#xff0c;我们会看到这样一个url的配置 启动服务&#xff0c;在浏览器中输入网址http://127.0.0.1:8000/admin/&#xff0c;结果如下 Django提供了一个非常强大的管…

前端解析Excel中的数据进行操作

技术要点&#xff1a;Vue、Element、JSON 功能描述&#xff1a;读取Excel中的数据&#xff0c;利用JavaScript技术奖数据转成Json格式进行操作&#xff01; 功能描述&#xff1a;只能用前端操作数据&#xff0c;并未实现将数据传送至后端处理&#xff01; 注意注意注意 如果…

Dapper——分布式跟踪系统

分布式跟踪系统 背景 当代的互联网的服务&#xff0c;通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上&#xff0c;这些软件模块&#xff0c;有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器&#xff0…

常用加密算法

目录 常见的加密算法可以分成三种&#xff1a; 对称加密算法 DES 3DES AES 非对称加密 RSA ECC Hash算法 MD5 SHA1 算法对比 算法选择 常见的加密算法可以分成三种&#xff1a; 对称加密算法&#xff1b;非对称加密算法&#xff1b;Hash算法&#xff1b;接下来我们…

论文 : Multi-Kernel Broad Learning systems Based on Random Features

Multi-Kernel Broad Learning systems Based on Random Features:A Novel Expansion for Nonlinear Feature Nodes 基于核方法的强大性能&#xff0c;本文提出了一种基于多核的BLS系统扩展方法。首先&#xff0c;将多核形式的非线性特征映射合并为广义学习系统的特征节点; 然后…

液晶显示器输入信号接口(一) —— VGA

VGA1. 简介2. VGA接口3. VGA线4. 技术原理4.1 信号传输4.2 模拟信号的扫描方式4.3 参数本文主要介绍VGA&#xff0c;其它输入输出信号接口介绍可从以下链接跳转&#xff1a; 液晶显示器输入信号接口(二) —— DVI 液晶显示器输入信号接口(三) —— HDMI 液晶显示器输入信号接口…

Mysql高级 学习笔记分享

索引&#xff1a;Index是帮助Mysql高效获取数据的数据结构 索引是一种数据结构 ---排好序的快速查找数据结构 、 某种满足特定查找算法的数据结构、以某种方式指向数据 两大功能&#xff1a;查找快、排好序 目的在于提高查询效率&#xff0c;类比字典 如果没有索引&a…