CentOS-7中Apache的优化与配置 (centos7)

教程大全 2025-07-09 10:18:00 浏览

记录下在CentOS 7中Apache的优化与配置的一些笔记,希望对大家有所帮助。

mod_expires网页缓存时间

现在的Web网站会由很多的图片、脚本、css以及flash等这些元素嵌入到页面中,如果不设置缓存或者缓存设置不当,会导致客户端向Web 服务器 访问时都会重新下载一次这些内容,浪费了很多带宽。通过Apache的mod_expires缓存模块来设置ExpiresHeader来缓存这些文件。expires模块通过Header报文来指定特定类型的文件在浏览器中的缓存时间,比如像图片、flash等这些在发布后不需要经常做修改的内容。因此做了缓存之后,浏览器从web服务器上下载第一次之后,就不需要重新再次下载这些文件了,而是直接从浏览器的缓存中读取了。通过这样的设置能够让客户端的访问速度加快,同时也节省了很多带宽。

/usr/local/apache/bin/apxs -c -i -a /usr/local/src/httpd-2.4.33/modules/filters/mod_expires.c

vi /usr/local/apache/conf/httpd.conf,找到并开启

LoadModule expires_module modules/mod_expires.so

缓存的方法有三种,分别是对目录,对全局,对虚拟主机

ExpiresActive on

ExpiresDefault “access plus 12 month”

ExpiresByType text/html “access 12 month”

ExpiresByType text/css” access 12 month”

ExpiresByType image/gif” access 12 month”

ExpiresByType image/jpeg” access 12 month”

ExpiresByType image/jpg “access 12 month”

ExpiresByType image/png “access 12 month”

ExpiresByType application/x-shockwave-flash “access 12 month”

ExpiresByType application/x-Javascript “access 12 month”

ExpiresByType video/x-flv “access 12 month”

全局缓存:直接在httpd.conf中配置以上内容

目录缓存:在httpd.conf中,找到你的网站目录位置中添加以上内容

#上面配置

虚拟主机:

## ServerAdmin[emailprotected]# DocumentRoot “/usr/local/apache/htdocs”# ServerName 127.0.0.1:80# ErrorLog “logs/dummy-host2.example.com-error.log”# CustomLog “logs/dummy-host2.example.com-access.log” common

# 在这里加入上面的配置

expires模块语法:

expires模块用到了ExpiresDefault和ExpiresByType两个指令,以下是这两个指令的语法:

ExpiresDefault “[plus]{}*”

ExpiresByType type/encoding ‘[plus]{}’

其中,base的参数有三个:access,now(等价于’access’),modification

plus关键字是可选的

必须是整数,确保可以atoi()所接收,(atoi可以把字符串转换成长整型数)

参数类型:years,months,weeks,days,hours,minutes,seconds

使用缓存的好处:

1.缩短服务响应时间,

2.减少服务器负载

3.减少所需的网络带宽量,降低成本。

缓存的缺点:由于使用了缓存,导致被缓存的内容有更新时,客户端看到的还是旧的

解决方案:

1.根据业务内容和需求,缩短缓存的时间

2.修改缓存文件的命名

隐藏版本号

CentOS

用curl -I 域名 ,会发现如果没有设置隐藏版本号的话,服务器版本及Openssl信息会全都显示出来,这样容易暴露web服务器版本,进而通过版本号查找漏洞入侵web服务器。

例如:

HTTP/1.1 302 FoundDate: Wed, 11 Apr 2018 08:03:25 GMTServer: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips PHP/5.6.32X-Powered-By: PHP/5.6.32Set-Cookie: PHPSESSID=slukigut3n2fkuii73r4tse9k1; path=/Expires: Thu, 19 Nov 1981 08:52:00 GMTCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0Pragma: no-cacheLocation: /Home/Login/index.htmlContent-Type: text/html; charset=UTF-8

以上信息暴露了apache的版本号以及openssl的版本号,按照下面的方法来隐藏Apache的版本号。

源码编译的Apache,以/usr/local/apache为主目录

1. vim /usr/local/apache/conf/httpd.conf ### 编辑httpd.conf文件

找到 Include conf/extra/httpd-default.conf,去掉前面的#号,使其生效,wq保存

2. vim /usr/local/apache/conf/extra/httpd-default.conf

找到ServerTokens选项,将其Full值改为Prod ### full值为显示版本号以及其它详细信息,Prod为隐藏这些信息

找到ServerSignature,将其On值改为Off ### Yes为启用这个指令用来配置服务器端生成文档的页脚(错误信息mod_proxy的FTP目录列表、mod_info的输出),No为隐藏这些信息

以上方法只能隐藏版本号以及Openssl信息,如果需要真正隐藏命名,或者需要伪装一个新的命名,需要先修改Apache的源码包,然后再进行编译安装

以源码包httpd-2.4.33为例

1.cd 到解压好的 httpd-2.4.33 文件夹里

2.找到include/ap_release.h文件

3.vim httpd-2.4.33/include/ap_release.h文件

找到以下几行:

#define AP_SERVER_BASEVENDOR “Apache Software Foundation” ###服务的供应商名称#define AP_SERVER_BASEPROJECT “Apache HTTP Server” ###服务的项目名称#define AP_SERVER_BASEPRODUCT “Apache” ###服务的产品名

#define AP_SERVER_MAJORVERSION_NUMBER 2 ###主版本号#define AP_SERVER_MINORVERSION_NUMBER 4 ###小版本号#define AP_SERVER_PATCHLEVEL_NUMBER 33 ###补丁级别#define AP_SERVER_DEVBUILD_BOOLEAN 0 #

将上边的内容改成你想要的信息,然后保存,前面的#号保留。编译安装,这样再用curl -I 域名 命令来查询时就是你修改后的信息了,对方就彻底不知道你的服务器是什么版本的了^_^

开启deflate压缩模块

启用Apache的deflate模块,可以开启压缩功能,减小网站传输时的带宽。

apache需要编译安装方式,以/usr/local/apache为apache的安装目录,以源码包/usr/local/src/httpd-2.4.33为例

首先查看/usr/local/apache/bin/apachectl -M ###查看里面的模块是否有deflate模块,也可以过滤一下/usr/local/apache/bin/apachectl -M | grep deflate

若有则到httpd.conf下面开启,如果没有显示,或者用grep过滤后显示Syntax OK,则说明模块没有安装。

以动态共享模块方式(DSO)编译安装deflate模块

/usr/local/apache/bin/apxs -c -i -a /usr/local/src/httpd-2.4.33/modules/filters/mod_deflate.c #其中前面部分是安装好的apache软件里面的apxs程序,后面是apache的源码安装包里面的deflate压缩模块

apxs程序编译选项:

-c 表示执行编译模块操作

-i 表示执行安装模块操作

-a 表示自动添加一个LoadModule行到httpd.conf文件中,以激活该模块

注意:如果提示-bash: /apache/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or Directory。请安装perl,perl-devel

yum install perl perl-devel

安装完成后修改apxs脚本: vi /usr/local/apache/bin/apxs,将第一行“#!/replace/with/path/to/perl/interpreter -w”修改为#!/usr/bin/perl -w,wq保存退出,然后再次编译该模块

安装完成后,vi /usr/local/apache/conf/httpd.conf中查看该模块是否安装及激活

LoadModule deflate_module modules/mod_deflate.so

注意:如果启动apache提示httpd: Syntax error on line 105 of /apache/conf/httpd.conf: Cannot load modules/mod_deflate.so into server: /apache/modules/mod_deflate.so: undefined symbol: inflate

则说明deflate模块没有找到zlib的库,可以先安装zlib,zlib-devel

yum install zlib zlib-devel

然后手动在httpd.conf下 加入以下命令

LoadFile /usr/lib64/libz.so ##libz.so为deflate压缩模块所需要的库文件

DeflateCompressionLevel 9

SetOutputFilter DEFLATE

DeflateFilterNote Input instream

DeflateFilterNote Output outstream

DeflateFilterNote Ratio ratio

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/xhtml+xml application/xml application/rss+xml application/atom_xml application/x-javascript application/x-httpd-php image/svg+xml image/gif image/png image/jpe image/swf image/jpeg image/bmp application/javascript

DeflateCompressionLevel 9 ###压缩等级(1-9),等级越大效率越高,但同时消耗的CPU也高,根据具体情况调优,也可以设置为6来平衡CPU及压缩质量

AddOutputFilterByType ##仅压缩限制特定的MIME类型文件


如何测试和调试linux的Apache服务器

yum -y install httpd ##安装配置服务需要自己去配置;配置文件vim/etc/httpd/conf/具体参数含义可以网络、谷歌等采纳是一种美德补充:apache只是一个架构需要搭配mysql、php等服务

提示No input file specified 怎么处理

(一)IIS Noinput file specified方法一:改中的doc_root行,打开ini文件注释掉此行,然后重启IIS方法二:请修改找到; _redirect = 1去掉前面分号,把后面的1改为0即_redirect = 0(二)apacheNo input file specifiedapache No input filespecified,今天是我们配置apache RewriteRule时出现这种问题,解决办法很简单如下打开 在RewriteRule 后面的教程后面添加一个“?”完整代码如下 onRewriteCond $1 !^(|images|)RewriteRule ^(.*)$ /?/$1 [L]如果是apache服务器出问题,看看是不是的Apache 把 后缀的文件解析哪里有问题了。 总结Apache 将哪些后缀作为 PHP 解析。 例如,让 Apache 把 后缀的文件解析为PHP。 可以将任何后缀的文件解析为 PHP,只要在以下语句中加入并用空格分开。 这里以添加一个 来示例。 AddType application/x-httpd-php 为了将 教程作为 PHP 的源文件进行语法高亮显示,还可以加上: AddType application/x-httpd-php-source 用通常的过程启动 Apache(必须完全停止 Apache 再重新启动,而不是用 HUP 或者USR1 信号使 Apache 重新加载)。 (三)nginx配置遭遇No inputfile specified虚拟机测试nginx 遭遇 Noinput file specified,多方查找终于找到解决办法1、 (/etc/php5/cgi/)的配置中这两项_pathinfo=1(这个是自己添加的)doc_root=2、nginx配置文件/etc/nginx/sites-available/default中注意以下部分location ~ \$ {fastcgi_pass 127.0.0.1:9000;fastcgi_;fastcgi_paramSCRIPT_FILENAME/var/www/nginx-default$fastcgi_script_name; includefastcgi_params; }红色部分路径需要根据你主机主目录的实际情况填写配置完以上部分,重启一下service nginx restart,应该没问题了(四)注意检查下网站目录是否有相关用户的写入权限

linux的php安装目录在哪

1、首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。 2、在linux命令行下输入shell指令:find / -name *php*。 3、键盘按“回车键”运行shell指令,此时会看到php安装目录在/usr/local/lib/php。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐