linux之httpd的 centos7 status页面状态 6源码编译httpd 网页优化缓存 apache防,反盗链 7和6的虚拟主机区别
httpd centos7 status页面状态 6源码编译httpd 网页优化缓存 apache防,反盗链 7和6的虚拟主机区别
1.httpd内置的status页面设置
httpd对当前服务器运行了多少进程,有多少进程正在进行请求,有多少进程正在被响应等,
在内置页面可以进行查看,但需要管理员进行定义,内置的状态页面即为status页面。
status页面作用:便于分析httpd服务器的进程状况、负载状况,方便管理员进行web服务器的管理和监控。
status页面定义方式:使用location容器进行定义,可以在中心主机,也可以在虚拟主机中进行定义。
1.)中心主机设置status页面
Location 定义的是 192.168.10.20/kkk --是对kkk做的定义
vim /etc/httpd/conf/httpd.conf 更改主配置文件 解开下面这段话即可
中心主机: /var/www/html 解开的是这个目录下的网页 允许网段 或 ip

992 <Location /server-status> ----定义的也就是这个
993 SetHandler server-status
994 Order deny,allow
995 Deny from all
996 Allow from 192.168.10.0/24 ---允许网段或者ip
997 </Location>
真机测试即可 http://192.168.10.20/server-stayus

一个正在被处理 7个空闲的线程进程
2.虚拟主机:创建目录 /www/doc/www1
vim /etc/httpd/conf/httpd.conf 更改主配置文件
<VirtualHost 192.168.10.20:80>
DocumentRoot /www/doc/www1
ServerName root@www1.ujiuye.com
<Location /server-status>
SetHandler server-status ---统计服务器进程信息,状态信息
Order deny,allow
deny from all
allow from 192.168.10.0/24
</Location> ---加上这一段即可,其余配置不变
ErrorLog logs/ww1.ujiuye.com-error_log
CustomLog logs/ww1.ujiuye.com-access_log combined
</VirtualHost>
测试linux端 记得改/etc/hosts 主机映射,DNS
http://192.168.10.200/server-status
2.centos-6上编译安装使用httpd-2.4(源码安装)
httpd-2.4程序版本需要依赖apr-1.4或以上版本(为各个平台提供兼容性),
在centos上apr可能被其他非http的程序依赖,因此升级rpm不太现实,因此,在centos-6上建议使用源代码编译安装。
1)编译安装的程序安装目录,相关配置、服务启停脚本需要自定义
1.首先编译1.4或以上版本的apr和apr-utils(编译到指定位置,防止和原版本的apr冲突)
yum -y install pcre-devel openssl-devel perl gcc gcc-c++ -安装GCC编译器
tar xvf apr-1.5.2.tar.bz2 -解包
cd apr-1.5.2
./configure --prefix=/usr/local/apr && make && make install
--prefix指定安装目录 先执行./configuer命令,执行成功在执行make
前两条命令执行完毕 在执行第三条makeinstall 编译命令
tar xvf apr-util-1.5.3.tar.bz2
cd apr-util-1.5.3
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ && make && make install
指定这个软件的路径
yum -y remove httpd如果已安装 则卸载
rm -rf /etc/httpd
useradd -r httpd
tar xvf httpd-2.4.10.tar.bz2--源码解压
cd httpd-2.4.10 --sysconf=/etc/httpd24指定配置目录 运行模式
./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=preforkmake && make install
如果报错
tar xvf httpd-2.4.10.tar.bz2
cd /root/
ls
cp -rf apr-1.5.2 httpd-2.4.10/srclib/apr-util
cp -rf apr-util-1.5.3 httpd-2.4.10/srclib/apr-util
cd httpd-2.4.10
ls
./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-included-apr make && make install
2)脚本启停文件需自己编写,可从httpd服务指令文件拷贝进行自定义修改即可
1.查看apache网站
vim /etc/httpd24/httpd.conf --主配置文件


#ServerName www.example.com:80
ServerAdmin you@example.com
DocumentRoot "/usr/local/apache/htdocs" ---这里指定了测试网页的路径
<Directory "/usr/local/apache/htdocs">

iptables -Z -X -F ---关闭防火墙
setenforce 0
/usr/local/apache/bin/apachectl start `--重启服务测试

2.服务启停
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd ---复制配置文件
vim /etc/init.d/httpd

在下面写入这两个
# chkconfig: 35 85 21 ---带#号 设置管理服务
# description:wwww

chkconfig --add httpd ---把httpd服务交给chkconfig 管理
chkconfig httpd on ---开机启动httpd

3.)编译安装需要自定义环境变量,才能全局使用相关指令TAB
vim /etc/profile 编辑PATH
tail /etc/profile查看
source /etc/profile 读取配置环境
echo $PATH 输出PATH


4)需要启用dflate压缩和rewrite网页重写模块
vim /etc/httpd24/httpd.conf --主配置文件


把这两个注释去掉即可
LoadModule deflate_module modules/mod_deflate.so 压缩功能
LoadModule rewrite_module modules/mod_rewrite.so 网页重新功能
/etc/init.d/httpd restart --重启服务
查看端口 和进程
ps aux | grep httpd
netstat -antulp | grep :80

3.httpd-2.4新特性
httpd-2.4的新特性
①MPM支持DSO机制
②支持event MPM
③支持异步读写
⑤支持增强版的表达式分析器
⑥支持毫秒级别的keepalive timeout
⑦基于FQDN的虚拟主机不再需要NameVirtualHost指令
⑧支持用户自定义变量
httpd-2.4的新模块
1)mod_proxy_fcgi:通过代理的方式运行php程序,将对php网页的请求转发给代理给后台的程序
2)mod_ratelimit:限制下载速度
3)mod_remoteip:通常情况apache位于前端默认是可以识别真实IP的,但是如果用了CDN等apache位于后端的情况下则只能识别CDN节点服务器的IP而无法识别用户真实IP,该模板就是用来获取得到用户真实IP
4.httpd网站页面优化--2缓存
1.)配置httpd网站页面缓存
vim /etc/httpd24/httpd.conf --主配置文件
Apache的网页优化需要expires模块来进行,首先需确定此模块是否安装
httpd -M | grep "expires"
若没有开启,则进入主配置文件,开启 vim /etc/httpd24/httpd.conf
开启
85 #LoadModule cache_module modules/mod_cache.so --存放网页缓存
94 LoadModule buffer_module modules/mod_buffer.so --存放网页缓存
109 LoadModule expires_module modules/mod_expires.so --指定过期时间
主配置文件 先定义 在<IfModule></IfModule> 容器中,例 如:根据需求增加条件
<IfModule mod_expires.c>
ExpiresActive On --开始缓存
Expiresdefault "access plus 30 seconds"
ExpiresByType text/css "now plus 2 months"
ExpiresByType text/js "now plus 2 days"
ExpiresByType image/jpeg "access plus 2 months"
ExpiresByType image/bmp "access plus 2 months"
ExpiresByType image/x-icon "access plus 2 months"
ExpiresByType image/png "access plus 2 months"
</IfModule>
重启服务查看网页 /etc/init.d/httpd restart
浏览器查看网页,F12 F5 http://192.168.10.30

5.配置apache的防盗链
盗链:是指以未经原始web服务器允许,私自超链接到原始web站点的方式和行为,通常会盗取对方web服务器中的图片、文件、视频等静态资源。被盗web服务器会承受额外的带宽压力,所以需要对服务器配置防盗链。
测试思路:
/usr/local/apache/htdocs 6合法防网页 的路径 /etc/init.d/httpd restart重启服务
/var/www/html/ 7盗 网页的路径
1、 两台httpd服务,其中一台作为合法主机,在网页根目录下的index.html中显示图片,代码为:
在网页要目录中存放welcome.jpg图片
2、 另外一台作为非法服务器,盗用合法主机上的图片welcome.jpg,index.html的代码为:
<html>
<title>I AM Hei</title>
<body>
<h1> Hei..Hei! </h1>
<img src="http://192.168.10.30/welcome.jpg">;
</body>
</html>
1.合法的主机6,去创建一个测试站网页
cp welcome.jpg /usr/local/apache/htdocs 把jpg照片放进去
cd /usr/local/apache/htdocs vim index.html --测试网页
内容为:
<body>
<h1>test</h1>
<p>web test</p>
</br>
<img src="welcome.jpg"></br>
<a href="http://www.baidu.com">www.baidu.com.com</a>
</body>

测试网页 http://192.168.10.30/

2.盗取网页 7 ,创建盗取测试网页
vim /etc/httpd/conf/httpd.conf --更改主配置文件 主机名什么的
cd /var/www/html --测试网址路径
vim index.html --创建盗取网页
<html>
<title>I AM Hei</title>
<body>
<h1> Hei..Hei! </h1>
<img src="http://192.168.10.30/welcome.jpg">;
</body>
</html>
关闭防火墙
systemctl restart httpd重启命令
3.网站测试,盗窃成功
http://192.168.10.40

4.反盗链 正则表达式规则 匹配顺序
防盗链机制:对某种特定的文件实现refer访问控制,以rewrite模块的URL重写功能来实现(网页重定向以及正则匹配在Nginx里会详细说明)。
配置规则变量说明:
%{HTTP_REFERER}浏览header中的链接字段,存放一个连接的URL,代表是哪个链接访问所需的网页。
!^ 不以....开头 ^以是,什么开头 !不
.*$ 以任意字符结尾 $以什么什么结尾 .任意一个字符 *表达式可以出现多次0次
NC 不区分大小写
R 强制跳转 重定向
规则匹配说明:
RewriteEngine On 打开网页重写功能(满足条件则跳转)
RewriteCond 设置匹配规则
RewriteRule 设置跳转动作
注意:
①:需要在Directory容器中进行配置
②:如果相应变量的值匹配所设置的规则,逐条进行向下处理,如果不匹配,下面规则不再匹配。对于上面的规则,不匹配为设置的安全网站,所有的规则都匹配,则是非法网站
1.在合法的httpd上修改 vim /etc/httpd24/httpd.conf --主配置文件
在网页根目录的<Directory></Directory>中配置:
加入这几行
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://192.168.10.30/.*$
RewriteCond %{HTTP_REFERER} !^http://192.168.10.30/*$
RewriteRule .*\.(gif|swf|jpg)$ http://192.168.10.30/error.png [R,NC]

注意:.*\.(gif|swf|png)$ error.jpg后缀名不能一样,并且要清除缓存
想要的 这些 给他这个 注意后缀名不能和之前一样
逐条处理
!^http://192.168.10.30/.*$
!^ 不以192.168.10.30 匹配这里面一样 ,那么就是信任的 不会向下处理
如果是 192.168.20.30 那么就会向下逐条处理 最后是跳转动作 跳转
测试 http://192.168.10.40

5.apache隐藏版本号
在生产环境中,版本信息暴露在网络中,会透露一定的漏洞信息,因此在生产环境通常要隐藏版本号。
查看 2.4.6版本

去主配置文件中加入这两行 关闭版本信息
vim /etc/httpd24/httpd.conf
ServerTokens Prod 返回的http的回应版本头信息
ServerSignature Off
在全局配置或虚拟主机的全局配置中定义即可(不要写在VirtualHost容器内)

抓包测试
6.centos7安装和配置httpd-2.4
1.安装httpd-2.4
在centos-7中,内置了httpd-2.4。使用rpm包方式进行安装即可
yum -y install httpd
httpd-2.4在centos-7中和centos-6中httpd-2.2配置不一样
主配置文件:/etc/httpd/conf/httpd.conf
辅助配置文件:/etc/httpd/conf.d/
模块文件位置:/usr/lib64/httpd/modules/
模块配置文件路径:/etc/httpd/conf.modules.d/
区别:不同的模块配置文件以分开单独的方式进行存放,
2.更改默认的MPM模型
vim /etc/httpd/conf.modules.d/00-mpm.conf
更改模式
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so 带上#
LoadModule mpm_worker_module modules/mod_mpm_worker.so 解开#

重启httpd服务 systemctl restart httpd
查看服务 模式 http -M | grep worker 或者 prefork


3.查看端口 服务
ps aux | grep httpd

Centos-7服务启停控制方式:systemctl {start/stop/restart/reload/status} httpd[.service]
4.mpm模块对应大参数配置
cd /usr/share/doc/httpd-2.4.6/
cp httpd-mpm.conf /etc/httpd/conf.
cd /etc/httpd/conf.d/ ---有了这个文件启动就会读取, 和其他文件相互配合
vim httpd-mpm.conf ---主要是配置 模式 其他参数
讲解里面参数的意义
<IfModule mpm_prefork_module> ---prefork工作模式
StartServers 5 ---默认启动阿帕奇 多少进程
MinSpareServers 5 ---最小的空闲线程数,等待人家发请求
MaxSpareServers 10 ---最大的空闲线程数 最多的工作线程
MaxRequestWorkers 250 ---最大的工作线程数 最打开数量
MaxConnectionsPerChild 0 ---服务进程可以承受多少连接 0表示可承受所有
</IfModule>


7.Centos-7虚拟主机的区别
1)httpd-2.4建议将配置文件进行分片进行配置,方便管理,例如配置虚拟主机
2)centos-7的虚拟主机不再需要控制主配置文件的NameVirtualHost开关
但需要额外注意包含关系

1修改配置文件 ,增加虚拟主机
vim /etc/httpd/conf.d/vhost.conf --建立虚拟主机的文件
NameVirtualHost 192.168.10.20:80(可要可不要)
<VirtualHost 192.168.10.20:80>
ServerAdmin root@www1.ujiuye.com
DocumentRoot /www/docs/www1
<Directory "/www/docs/www1"> --对DocumentRoot进行访问控制
AllowOverride None
Options Indexes
Require all granted ---所有人都能访问 ,必须有这段
</Directory> ----虚拟主机才能生效
ServerName www1.ujiuye.com
ErrorLog logs/www1-error_log
CustomLog logs/www1-access_log common
</VirtualHost>
<VirtualHost 192.168.10.20:80>
ServerAdmin webmaster@www2.ujiuye.com
DocumentRoot /www/docs/www2
<Directory "/www/docs/www2">
AllowOverride None
Options Indexes
Require all granted
</Directory>
ServerName www2.ujiuye.com
ErrorLog logs/www2-error_log
CustomLog logs/www2-access_log common
</VirtualHost>

2.创建目录,创建测试网页
mkdir -p /www/doc/www1
mkdir -p /www/doc/www2
cd /www/doc/www1
vim index.html
cd /www/doc/www
vim index.html
增加解析
修改vim /etc/hosts
192.168.10.40 www1.ujiuye.com
192.168.10.40 www2.ujiuye.com
3.重启访问
systemctl restart httpd

8.Centos-6和Centos-7访问控制的区别
1.Centos-6 :
Order deny,allow
Deny from all
Allow from IP
2.Centos-7 :设置访问服务状态,更改虚拟主机配置文件
访问控制Require相关选项放置在<RequireAll> </RequireAll>容器中,也可出现在Directory容器中(这时可以不要<RequireAll></RequireAll>标签对),也可以出现在其他标签中,如:
增加访问控制 示例: 10.40不能访问,其余都可以
<Location /server-status>
SetHandler server-status
<RequireAll>
Require all granted
Require not ip 192.168.10.40
</RequireAll>
</Location>

其中:
Require all granted允许所有的访问
Require all denied拒绝所有访问
如:允许所有人 拒绝10.40访问
<RequireAll>
Require all granted
Require not ip 192.168.10.40
</RequireAll>
如:不允许访问,只要10.40可以访问
<RequireAll>
Require all denied
Require ip 192.168.10.40
</RequireAll>
Require ip xxx.xxx.xxx.xxx/xx 指定IP或网段可以访问 空格在加其他的IP或网段
Require not ip xxx.xxx.xxx.xxx/xx 指定IP或网段不可以访问
控制特定主机访问控制
Require host HOSTNAME (包括DOMAIN) --如果要域名 注意DNS解析
Require not host HOSTNAME (包括DOMAIN)
注意:如果不指定访问控制机制,在中心主机中,默认每个访问路径是拒绝访问的。
要加控管 <Directory "/www/docs/www2"> 才可以
AllowOverride None
Options Indexes
Require all granted
</Directory>
3.测试
Linux端
http://192.168.10.40/server-status

其他机器


浙公网安备 33010602011771号