Web 进阶——Apache

简介: Web 进阶——Apache

Web 进阶——Apache



一、Apache 优化


1.安装 Apache

2.配置 Apache 保持连接、网页传输压缩、页面缓存时间

1)保持连接、长连接(Keep-alive)

2)网页传输压缩

3)页面缓存时间

3.配置 Apache 隐藏版本号

1)第一种方法

2)第二种方式

4.配置 Apache 防盗链

1)添加图片

2)配置盗图机器

3)访问验证

4)为 Apche 设置防盗链,防止 DaoTu 网站盗用

5.Apache 压力测试


一、Apache 优化



准备工作


image.png


image.png

  • 注意:配置防盗链的时候才需要用到 DaoTu 机器。


1.安装 Apache


[root@Apache ~]# wget http://archive.apache.org/dist/httpd/httpd-2.2.17.tar.gz
[root@Apache ~]# yum -y install zlib-devel
[root@Apache ~]# tar zxf httpd-2.2.17.tar.gz -C /usr/src/
[root@Apache ~]# cd /usr/src/httpd-2.2.17/
[root@Apache httpd-2.2.17]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-cgi \
--enable-deflate \
--enable-expires && make && make install


注解:


  • --enable-deflate:启用 deflate 模块(需安装 zlib-devel 依赖包)
  • --enable-expires:启用网页缓存过期时间模块。


image.png


安装后优化调整


[root@Apache httpd-2.2.17]# ln -s /usr/local/httpd/bin/* /usr/local/bin/        # 优化执行路径
[root@Apache ~]# httpd -v                               # 查看 Apache 版本
[root@Apache ~]# sed -i '97s/^#//g' /usr/local/httpd/conf/httpd.conf          # 将 # 替换为空
[root@Apache ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd          # 复制启动文件
[root@Apache ~]# /etc/init.d/httpd start                        # 启动 Apache 服务
[root@Apache ~]# netstat -anpt | grep 80                        # 查看端口是否开启


image.png


将 Apache 主机编译好的,远程复制到 DaoTu 机器中:


[root@Apache ~]# scp -r /usr/local/httpd/ root@192.168.1.2:/usr/local/httpd/


2.配置 Apache 保持连接、网页传输压缩、页面缓存时间


1)保持连接、长连接(Keep-alive)


  • 开启 Apache 服务端的长连接后,当客户端请求完成之后,负责返回给客户端数据的进程并不会直接退出;
  • 而是等待下一个请求的到来,这样做的主要目的是减少了 TCP 的三次握手。


[root@Apache ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf
16 KeepAlive On
23 MaxKeepAliveRequests 100
29 KeepAliveTimeout 20
[root@Apache ~]# sed -n '/httpd-default.conf/p' /usr/local/httpd/conf/httpd.conf
[root@Apache ~]# sed -i '/httpd-default.conf/s/^#//' /usr/local/httpd/conf/httpd.conf
[root@Apache ~]# sed -n '/httpd-default.conf/p' /usr/local/httpd/conf/httpd.conf
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80


image.png


访问抓包验证:


image.png


2)网页传输压缩


客户端在请求服务端数据后,服务端在返回数据包给客户端时,会先对返回的数据进行压缩,压缩之后再传输。


作用:


  • 配置 Apache 的网页压缩功能,是使用 Gzip 压缩算法来对 Apache 服务器发布的网页内容进行压缩后再传输到客户端浏览器。
  • 通常在 CPU 有空闲,网站带宽占用高时,会启动压缩。


优势:


  • 加快网页加载的速度,改善用户的浏览体验。
  • 降低网络传输带宽,服务器节省流量。
  • 网页压缩有利于搜索引擎的抓取。


方式:Apache 能实现网页压缩功能的模块有 mod_gzip 模块和 mod_deflate 模块。


image.png


image.png

[root@Apache ~]# apachectl -D DUMP_MODULES | grep deflate
[root@Apache ~]# cat <<END >> /usr/local/httpd/conf/httpd.conf 
AddOutputFilterByType DEFLATE test/html test/plain test/css test/xml test/javascript
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
END
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80


image.png


访问并抓包验证:


image.png



3)页面缓存时间


  • 通过 mod_expires 模块配置 Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求,减轻服务端工作压力。
  • 启动 mod_expires 模块后,会自动生成页面头部信息中的 Expires 标签和 CacheControl 标签;
  • 从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。


[root@Apache ~]# apachectl -D DUMP_MODULES | grep expires
[root@Apache ~]# cat <<END >> /usr/local/httpd/conf/httpd.conf 
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 60 seconds"
</IfModule>
END
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80


image.png


访问并抓包验证:


image.png


3.配置 Apache 隐藏版本号


1)第一种方法


  • ServerTokens Prod:显示最少的信息(默认是 Full 显示完整信息)
  • ServerSignature Off:生成页面的页脚。


[root@Apache ~]# sed -n '/^Server/p' /usr/local/httpd/conf/extra/httpd-default.conf 
[root@Apache ~]# sed -i 's/ServerTokens Full/ServerTokens Prod/' /usr/local/httpd/conf/extra/httpd-default.conf
[root@Apache ~]# sed -i 's/ServerSignature On/ServerSignature Off/' /usr/local/httpd/conf/extra/httpd-default.conf 
[root@Apache ~]# sed -n '/^Server/p' /usr/local/httpd/conf/extra/httpd-default.conf 
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80


image.png


访问并抓包验证:


image.png


2)第二种方式


如果是源代码编译安装,还可以用修改源代码编译的方式:


  • 进入 Apache 的源码目录下的 include 目录,编辑 ap_release.h 这个文件,然后重新编译安装即可。


[root@Apache ~]# vim /usr/src/httpd-2.2.17/include/ap_release.h
将:
42 #define AP_SERVER_BASEVENDOR "Apache Software Foundation"
43 #define AP_SERVER_BASEPROJECT "Apache HTTP Server"
44 #define AP_SERVER_BASEPRODUCT "Apache"
46 #define AP_SERVER_MAJORVERSION_NUMBER 2
47 #define AP_SERVER_MINORVERSION_NUMBER 2
48 #define AP_SERVER_PATCHLEVEL_NUMBER   17
修改为:
42 #define AP_SERVER_BASEVENDOR "Coco"
43 #define AP_SERVER_BASEPROJECT "Coco"
44 #define AP_SERVER_BASEPRODUCT "CSDN 愿许浪尽天涯"
46 #define AP_SERVER_MAJORVERSION_NUMBER 8
47 #define AP_SERVER_MINORVERSION_NUMBER 8
48 #define AP_SERVER_PATCHLEVEL_NUMBER   8
[root@Apache ~]# cat /usr/local/httpd/build/config.nice
[root@Apache ~]# cd /usr/src/httpd-2.2.17/
[root@Apache httpd-2.2.17]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-cgi \
--enable-deflate \
--enable-expires && make clean && make && make install


image.png


[root@Apache ~]# /etc/init.d/httpd stop
[root@Apache ~]# /etc/init.d/httpd start
[root@Apache ~]# netstat -anpt | grep 80
[root@Apache ~]# httpd -v


image.png


访问并抓包验证:

image.png


总结:


  • 第一种方法虽然说可以隐藏版本号,但是不能隐藏服务名;而第二种方法不但可以隐藏服务名,还可以自定义版本号。


4.配置 Apache 防盗链


  • 防盗链就是防止别人盗用服务器中的图片、文件、视频等相关资源。可以通过 Apache 提供的 rewrite 模块进行优化。


1)添加图片


[root@Apache ~]# vim /usr/local/httpd/htdocs/index.html
<html>
  <body>
    <h1>It works!</h1>
    <img src="./1.jpg"/>
  </body>
</html>
[root@Apache ~]# cd /usr/local/httpd/htdocs/
[root@Apache htdocs]# ls
1.jpg  index.html
[root@Apache htdocs]# /etc/init.d/httpd start
[root@Apache htdocs]# netstat -anpt | grep 80


image.png


2)配置盗图机器


[root@DaoTu ~]# vim /usr/local/httpd/htdocs/index.htm
<html>
  <body>
    <h1>It works!</h1>
    <img src="http://192.168.1.1/1.jpg"/>
  </body>
</html>
[root@DaoTu ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@DaoTu ~]# /etc/init.d/httpd start
[root@DaoTu ~]# netstat -anpt | grep 80


3)访问验证


image.png


image.png


4)为 Apche 设置防盗链,防止 DaoTu 网站盗用


image.png


image.pngimage.pngimage.pngimage.pngimage.png

Rewrite 的规则:%{HTTP_REFERER} 浏览 header 中链接字段,存放一个连接的 URL,代表是从哪个链接访问所需的页面。


  • !^:不以某个字段开头。
  • .*$:以任意字符结尾。
  • NC:不区分大小写。
  • R:强制跳转。
  • 规则匹配:如果响应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则后面的规则不再继续匹配。


[root@localhost htdocs]# vim /usr/local/httpd/conf/httpd.conf
131 <Directory "/usr/local/httpd/htdocs">
添加如下:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://192.168.1.1/.*$  [NC]
RewriteCond %{HTTP_REFERER} !^http://192.168.1.1$  [NC]
RewriteRule .*\(gif|jpg|swf\)$  http://192.168.1.1/2.png  [R,NC]
</Directory>
[root@Apache htdocs]# ls
1.jpg  2.png  index.html
[root@Apache htdocs]# /etc/init.d/httpd restart
[root@Apache htdocs]# netstat -anpt | grep 80
[root@Apache htdocs]# /etc/init.d/httpd restart


image.png


访问验证:


image.png


image.png


5.Apache 压力测试


  • Apache 附带了压力测试工具 ab,非常容易使用,并且完全可以模拟各种条件对 Web 服务器发起测试请求。
  • 在进行性能调整优化过程中,可用 ab 压力测试工具进行优化效果的测试。


语法:ab -n 请求数总和  -c 并发用户数  网站网址


image.png


image.png

测试:


[root@Apache ~]# /usr/local/httpd/bin/ab -n 1000 -c 200 http://192.168.1.1/


image.png


相关文章
|
3月前
|
消息中间件 监控 Kafka
Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面
随着大数据技术的发展,Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面,方便管理和监控 Kafka 集群。本文详细介绍了 Kafka Manager 的部署步骤和基本使用方法,包括配置文件的修改、启动命令、API 示例代码等,帮助你快速上手并有效管理 Kafka 集群。
73 0
|
5月前
|
缓存 前端开发 Java
打造未来兼容的Web应用:Apache Wicket引领响应式设计的热潮
【9月更文挑战第4天】在软件开发领域,构建响应式Web应用至关重要。Apache Wicket作为一个强大的Java框架,支持响应式设计,确保应用在不同设备上均有出色体验。本文通过示例代码介绍使用Wicket的最佳实践,涵盖页面与组件模型、CSS媒体查询及自定义标记处理器的应用。同时,文章强调了优化加载时间、增强交互性和提升可访问性的重要性,帮助开发者打造高性能且美观的Web应用。
77 3
|
5月前
|
Java API Apache
从零到英雄的蜕变:如何用Apache Wicket打造你的第一个Web应用——不仅是教程,更是编程之旅的启航
【9月更文挑战第4天】学习Apache Wicket这一开源Java Web应用框架是一段激动人心的旅程。本文将指导你通过Maven搭建环境,并创建首个“Hello, World!”应用。从配置`pom.xml`到实现`HelloWorldApplication`类,再到`web.xml`的设置,一步步教你构建与部署简单网页。适合初学者快速上手,体验其简洁API与强大组件化设计的魅力。
137 1
|
6月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
6月前
|
Java 应用服务中间件 Apache
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
本文介绍了在IntelliJ IDEA中修改Web项目访问路径的步骤,包括修改项目、模块、Artifacts的配置,编辑Tomcat服务器设置,以及解决Apache Tomcat控制台中文乱码问题的方法。
323 0
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
|
6月前
|
Java Spring Apache
Spring Boot邂逅Apache Wicket:一次意想不到的完美邂逅,竟让Web开发变得如此简单?
【8月更文挑战第31天】Apache Wicket与Spring Boot的集成提供了近乎无缝的开发体验。Wicket以其简洁的API和强大的组件化设计著称,而Spring Boot则以开箱即用的便捷性赢得开发者青睐。本文将指导你如何在Spring Boot项目中引入Wicket,通过简单的步骤完成集成配置。首先,创建一个新的Spring Boot项目并在`pom.xml`中添加Wicket相关依赖。
163 0
|
6月前
|
Apache 开发者 Java
Apache Wicket揭秘:如何巧妙利用模型与表单机制,实现Web应用高效开发?
【8月更文挑战第31天】本文深入探讨了Apache Wicket的模型与表单处理机制。Wicket作为一个组件化的Java Web框架,提供了多种模型实现,如CompoundPropertyModel等,充当组件与数据间的桥梁。文章通过示例介绍了模型创建及使用方法,并详细讲解了表单组件、提交处理及验证机制,帮助开发者更好地理解如何利用Wicket构建高效、易维护的Web应用程序。
80 0
|
6月前
|
Java 前端开发 Apache
Apache Wicket与Spring MVC等Java Web框架大PK,究竟谁才是你的最佳拍档?点击揭秘!
【8月更文挑战第31天】在Java Web开发领域,众多框架各具特色。Apache Wicket以组件化开发和易用性脱颖而出,提高了代码的可维护性和可读性。相比之下,Spring MVC拥有强大的生态系统,但学习曲线较陡;JSF与Java EE紧密集成,但在性能和灵活性上略逊一筹;Struts2虽成熟,但在RESTful API支持上不足。选择框架时还需考虑社区支持和文档完善程度。希望本文能帮助开发者找到最适合自己的框架。
67 0
|
6月前
|
前端开发 JavaScript 开发者
革命性的飞跃:Apache Wicket新特性大揭秘,让你的Web开发之旅如虎添翼!
【8月更文挑战第31天】Apache Wicket作为一个成熟的Java Web框架,持续进化以适应现代Web开发需求。本文介绍Wicket的最新特性,包括响应式布局支持、组件化与模块化开发、异步请求处理、增强的表形处理以及与现代JavaScript框架的集成。通过具体代码示例展示如何利用这些特性构建高效、灵活且用户友好的Web应用程序。
94 0
|
6月前
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
144 0

热门文章

最新文章

推荐镜像

更多