Apache部署步骤与安全优化 apache基本配置
yuyutoo 2024-10-15 16:59 2 浏览 0 评论
系统环境配置
安 装 Apache HTTP Server 2.2
下载最新版本即可,安 装 tomcat-connector/jk for HTTP 2.2,具体安装步骤略过。
软件环境配置
- Apache
基础配置
--设置相对根目录的路径,通常是指存放配置文件和日志文件的地方。
ServerRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2"
--设置监听端口为 80
Listen 80
--设置网络管理员的Email,当客户端服务器发生错误时,服务器通常会向客户端返回错误提示
页面,为了方便解决错误,这个网页中通常有管理员的 Email 地址,可以通过电话使用 ServerAdmin 语句来设置管理员的EMail 地址
ServerAdmin gaoyu@21stc.com.cn
--Apache 默认服务器主目录路径
DocumentRoot "D:/tomcat-7-dsp/webapps/dsp"
--设置服务器主机名称 (如果有域名可以填入域名,没有域名则可填入服务器IP 地址)
#ServerName localhost:80
--设置目录权限(<Directory "目录路径">此次写设置目录权限的语句</Directory>)
<Directory " D:/tomcat-7-dsp/webapps/dsp "> Options FollowSymLinks
AllowOverride None Order allow,deny Allow from all
</Directory>
注:在上面这段目录属性配置中,主要有下面的选项:
Options:配置在特定目录使用哪些特性,常用的值和基本含义如下:
ExecCGI : 在 该 目 录 下 允 许 执 行 CGI 脚 本 。 Follow Sym Links: 在该目录下允许文件系统使用符号连接。
Indexes: 当用户访问该目录时,如果用户找不到 DirectoryIndex 指定的主页文件(例如 index.html),则返回该目录下的文件列表给用户。
Sym LinksIfOwner Match : 当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。
其它可用值和含义请参阅:
AllowOverride :允许存在于.htaccess 文件中的指令类型(.htaccess 文件名是可以改变的, 其文件名由 AccessFileName 指令决定):
None: 当 AllowOverride 被设置为 None 时。不搜索该目录下的.htaccess 文件(可以减小服务器开销)。
All: 在.htaccess 文件中可以使用所有的指令。
其他的可用值及含义请参看:
Order :控制在访问时 Allow 和 Deny 两个访问规则哪个更优先: Allow :允许访问的主机列表(可用域名或子网,例如:Allow from 192.168.0.0/16)。Deny :拒绝访问的主机列表。
--主页文件的设置(本例将主页文件设置为:index.html,index.htm 和index.php)
<IfModule dir_module>
DirectoryIndex index.html index.jsp
</IfModule>
配置全局错误页面
#ErrorDocument 500 "The server made a boo boo." ErrorDocument 404 /error/index.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://localhost/subscription_info.html
- ? Tomcat
如果单独使用Tomcat 做JSP 服务器,在工作效率上会存在问题,Tomcat 对于静态的html 文件、图片文件等的解析效率上不如 Apache,并且所能承受的最大并发连接数也有一定的限制。
在测试中,当并发连接较多时,Tomcat 就会处于“僵死”状态,对后继的请求连接失去响应。所以现在提出一个“整合”解决方案:将 HTML 与 JSP 的功能部分进行明确分工,让Tomcat 只处理 JSP 部分,其它的由 Apache 处理。Apache 与 Tomcat 各司其职,那么服务器的整体效率就能够得到提升。
Tomcat 服务器通过 Connector 连接器组件与客户程序建立连接,Connector 组件负责接收客户的请求,以及把 Tomcat 服务器的响应结果发送给客户。
默认情况下,Tomcat 在 server.xml 中间配置了两种连接器:
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector port="8080"
maxThreads="150"
minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />
第一个连接器监听器 8080 端口,负责建立 HTTP 连接。在通过浏览器访问 Tomcat 服务器的 Web 应用时,使用的就是这个连接器。
第二个连接器监听器 8009 端口,负责和其他的 HTTP 服务器建立连接。Tomcat 与其他HTTP 服务器集成时,就需要用到这个连接器。Web 客户访问 Tomcat 服务器上 JSP 组件的两种方式如图:
快速配置 JK 连接器连接 APACHE 和 Tomcat 的步骤:
配置 workers.properties
这是 JK 连接器接口的命令配置文件一个实,workers.properties 使用 ajp13 协议连接Apache 和 Tomcat。
# Defining a worker named worker1 and of type ajp13 worker.list=dsp,datashare
# Set properties for dsp worker.dsp.type=ajp13 worker.dsp.host=localhost worker.dsp.port=1009 worker.datashare.type=ajp13 worker.datashare.host=localhost worker.datashare.port=8009
配置 mod_jk.conf
#指出 mod_jk 模块工作所需要的工作文件 workers.properties 的位置JkWorkersFile conf/workers.properties
JkShmFile D:\logs\jk.shm # Where to put jk logs
JkLogFile D:\logs\mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel error
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" # JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# 将所有 servlet 和 jsp 请求通过 ajp13 的协议送给 Tomcat,让 Tomcat 来处理JkMount /dsp/* dsp
JkMount /datashare/* datashare
配置插件
在"Apache 文件夹/conf/httpd.conf"文件最后添加如下配置LoadModule jk_module modules/mod_jk.so
Include conf/mod_jk.conf
配置站点(样例)
NameVirtualHost *:*
<VirtualHost *:80>
ServerName www.chinageoss.org
ErrorDocument 500 /error/index.html
ErrorDocument 404 /error/index.html
ErrorDocument 403 /error/index.html
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F]
#共享平台网站应用
<Directory "D:\tomcat-7-dsp\webapps\dsp"> AllowOverride None
Options None Order allow,deny Allow from all
</Directory>
Alias /dsp "D:\tomcat-7-dsp\webapps\dsp"
JkMount /dsp/* dsp
#共享平台网站检索应用
<Directory "D:\tomcat-7-datashare\webapps\datashare"> AllowOverride None
Options None Order allow,deny Allow from all
</Directory>
Alias /datashare "D:\tomcat-7-datashare\webapps\datashare"
JkMount /datashare/* datashare
#网站错误
<Directory "D:\tomcat-7-dsp\webapps\404error"> AllowOverride None
Options None
Order allow,deny Allow from all
</Directory>
Alias /error "D:\tomcat-7-dsp\webapps\404error"
#共享平台网站卫星遥感数据集编目快视图
<Directory "F:\dsp\preview"> AllowOverride None Options None
Order allow,deny Allow from all
</Directory>
Alias /preview "F:\dsp\preview"
</VirtualHost>
s 安全配置与优化
启用 gzip 功能
从服务端优化来说,通过对服务端做压缩配置可以大大减小文本文件的体积,从而使加载 文本的速度成倍的加快。目前比较通用的压缩方法是启用 gzip 压缩。它会把浏览器请求的页面, 以及页面中引用的静态资源以压缩包的形式发送到客户端,然后在客户端完成解压和拼装.具体是 实现不用关心,我们只要将 GZip 启用就好.下图是使用相关工具检测没有开启网页压缩的效果。如下步骤我们就来具体开启基于 apache 的 GZip 压缩支持。
- 找到并打开 apache/conf 目录中的 httpd.conf 文件;httpd.conf 中打开 deflate_Module 和 headers_Module 模块,具体做法为将 如下两句前面的#去掉:
LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so
- 在 httpd.conf 文件底部加入如下代码配置需要压缩的文件:
<IfModule deflate_module> SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary AddOutputFilterByType DEFLATE text/*
AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript
</IfModule>
- 重启 apache 服务端 使用工具重新检测是否开启 gzip 压缩。使用 Fiddler2:
使用在线检测工具:
关闭 TraceEnable
黑客攻击网站前一般会搜集网站的相关信息,以查找出系统可能存在的漏洞,比如系统版 本和名称,网站服务器版本和名称,对外开放端口,确认网址 IP 地址和 DNS 信息,WEB 资料收集等。
对于隐藏网站服务器版本信息和网页版本信息,之前的文章隐藏 apache 版本号和 php 版本号有进行说明。
而 TraceEnable 选项是默认开启,用途是除错,在网站漏洞检测中是一个警告漏洞,建议关闭。
- 2.0.55 以上版本的 Apache 服务器,可以在 httpd.conf 的尾部添加: TraceEnable off如果你使用的是 Apache:
- 确认 rewrite 模块激活(httpd.conf,下面一行前面没有#): LoadModule rewrite_module modules/mod_rewrite.so
- 在各虚拟主机的配置文件里添加如下语句:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F]
注:可以在 httpd.conf 里搜索 VirtualHost 确定虚拟主机的配置文件。
隐藏 apache 版本号
- 修改 httpd.conf 文件的下面配置为: ServerTokens ProductOnly ServerSignature Off重启 Apache,现在 http 头里面只看到: Server: Apache
相关推荐
- jQuery VS AngularJS 你更钟爱哪个?
-
在这一次的Web开发教程中,我会尽力解答有关于jQuery和AngularJS的两个非常常见的问题,即jQuery和AngularJS之间的区别是什么?也就是说jQueryVSAngularJS?...
- Jquery实时校验,指定长度的「负小数」,小数位未满末尾补0
-
在可以输入【负小数】的输入框获取到焦点时,移除千位分隔符,在输入数据时,实时校验输入内容是否正确,失去焦点后,添加千位分隔符格式化数字。同时小数位未满时末尾补0。HTML代码...
- 如何在pbootCMS前台调用自定义表单?pbootCMS自定义调用代码示例
-
要在pbootCMS前台调用自定义表单,您需要在后台创建表单并为其添加字段,然后在前台模板文件中添加相关代码,如提交按钮和表单验证代码。您还可以自定义表单数据的存储位置、添加文件上传字段、日期选择器、...
- 编程技巧:Jquery实时验证,指定长度的「负小数」
-
为了保障【负小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【负小数】的方法。HTML代码<inputtype="text"class="forc...
- 一篇文章带你用jquery mobile设计颜色拾取器
-
【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...
- 编程技巧:Jquery实时验证,指定长度的「正小数」
-
为了保障【正小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【正小数】的方法。HTML做成方法<inputtype="text"class="fo...
- jquery.validate检查数组全部验证
-
问题:html中有多个name[],每个参数都要进行验证是否为空,这个时候直接用required:true话,不能全部验证,只要这个数组中有一个有值就可以通过的。解决方法使用addmethod...
- Vue进阶(幺叁肆):npm查看包版本信息
-
第一种方式npmviewjqueryversions这种方式可以查看npm服务器上所有的...
- layui中使用lay-verify进行条件校验
-
一、layui的校验很简单,主要有以下步骤:1.在form表单内加上class="layui-form"2.在提交按钮上加上lay-submit3.在想要校验的标签,加上lay-...
- jQuery是什么?如何使用? jquery是什么功能组件
-
jQuery于2006年1月由JohnResig在BarCampNYC首次发布。它目前由TimmyWilson领导,并由一组开发人员维护。jQuery是一个JavaScript库,它简化了客户...
- django框架的表单form的理解和用法-9
-
表单呈现...
- jquery对上传文件的检测判断 jquery实现文件上传
-
总体思路:在前端使用jquery对上传文件做部分初步的判断,验证通过的文件利用ajaxFileUpload上传到服务器端,并将文件的存储路径保存到数据库。<asp:FileUploadI...
- Nodejs之MEAN栈开发(四)-- form验证及图片上传
-
这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能。开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R...
- 大数据开发基础之JAVA jquery 大数据java实战
-
上一篇我们讲解了JAVAscript的基础知识、特点及基本语法以及组成及基本用途,本期就给大家带来了JAVAweb的第二个知识点jquery,大数据开发基础之JAVAjquery,这是本篇文章的主要...
- 推荐四个开源的jQuery可视化表单设计器
-
jquery开源在线表单拖拉设计器formBuilder(推荐)jQueryformBuilder是一个开源的WEB在线html表单设计器,开发人员可以通过拖拉实现一个可视化的表单。支持表单常用控件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)