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

http://192.168.10.40    

 

 

 

 

 

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

 

 

 

 

 

 

其他机器

 

 

 

 

 

 

posted @ 2020-08-01 11:55  浅唱I  阅读(405)  评论(0)    收藏  举报