linux下apache虚拟主机搭建以及优化
Posted WindSun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下apache虚拟主机搭建以及优化相关的知识,希望对你有一定的参考价值。
首先是apache的安装,这里采用的是源码安装方式:
安装 apr
apr:apache portable run-time 是 apache 运行时环境,为了能使 apache 运行在不同的平台上并且能使用同样的机制,所以 apr 能够抹除不同系统的数据库,让 apache 运行环境的机制
都一样,并且能让 apache 的某些特性跨平台的使用。
[root@rhel data]# cd /data/soft
[root@rhel soft]# tar -zxvf apr-1.5.2.tar.gz
[root@rhel soft]# cd apr-1.5.2
[root@rhel apr-1.5.2]# ./configure --prefix=/usr/local/apr
[root@rhel apr-1.5.2]# make && make install
安装 apr-util
[root@rhel data]# cd /data/soft
[root@rhel soft]# tar -zxvf apr-util-1.5.4.tar.gz
[root@rhel soft]# cd apr-util-1.5.4
[root@rhel apr-util-1.5.4]# ./configure--prefix=/usr/local/apr-util --withapr=/usr/local/apr
[root@rhel apr-util-1.5.4]# make && make install
安装 pcre
[root@rhel data]# cd /data/soft
[root@rhel soft]# tar -zxvf pcre-8.40.tar.gz
[root@rhel soft]# cd pcre-8.40
[root@rhel pcre-8.40]# ./configure --prefix=/usr/local/pcre
[root@rhelpcre-8.40]# make && make install
添加自启动
[root@rhelhttpd-2.4.25]# echo "/data/apache/bin/apachectl start">>/etc/rc.local
Apache虚拟主机的实现:
在工作中一般遇到的有两种情况:1、基于端口的虚拟主机实现 2、基于域名的虚拟主机实现。
下面我们分别对两种情况进行解释:
一、首先我们来看下基于端口的虚拟主机实现,关于这个所做的操作只需要修改下面几处:
1. 修改http.conf文件,在Listen 80 下面加上想访问的端口,然后在将#Includeconf/extra/httpd-vhosts.conf前面的井号去掉,最后将ServerName 修改成本地即可。
这个根据需要的首页文件类型进行添加。
2、对http-vhosts.conf文件进行虚拟主机配置
这样就实现了两个虚拟主机的搭建,我们来测试一下结果。
二、基于域名的虚拟主机的搭建
这里的操作和基于端口的差不多,只不过不需要修改端口
1. 修改http.conf文件,在将#Includeconf/extra/httpd-vhosts.conf前面的井号去掉,最后将ServerName 修改成本地即可。
2. 同样在http-vhosts.conf文件里面进行配置:
关于Options Indexes FollowSymLinks:
在 Indexes 前,加+代表允许目录浏览;加-代表禁止目录浏览。把-Indexes 直接删掉就是禁止目录浏览。
因为我这里只有一个域名所以就不多进行测试了,在不同的ServerName那里填上不同的域名,那么基于域名的虚拟主机就搭建完成了。
Apache反向代理的实现:
1. 修改 httpd.conf 文件,找到文件中的下面四行模块代码,将前面的 # 去掉:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_modulemodules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
2.在httpd-vhosts.conf相应的主机里面添加代理即可
这样就实现了apache代理应用
安全加固
apache 禁用trace 方法
修改 httpd.conf 文件,激活 rewrite 模块
#LoadModule rewrite_module modules/mod_rewrite.so
改为
LoadModule rewrite_module modules/mod_rewrite.so
在 httpd.conf 最后加入 TraceEnable off
apache 屏蔽恶意指向
项目中经常有同事提到很多域名恶意指向网站 ip,导致随意访问哪个域名,都能浏览网站,而那些恶意的域名指向可能会影响电信封掉网站 ip,提供以下解决方法。
在相应的虚拟主机里面添加如下文件:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www).xxx.gov.cn [NC]
RewriteCond %{HTTP_HOST} !^(www).xxx1.gov.cn [NC]
RewriteRule ^/(.*) /error.html [L]
说明:
RewriteCond %{HTTP_HOST} !^后配置的是当前虚拟主机中的域名,只要不是 servername 和
serveralias 中列出来的域名,全部指向 error.html,因为没有这个文件,所以打不开页面。
RewriteCond %{HTTP_HOST} !^可以添加多个,如果需要 ip 访问,可以添加
RewriteCond %{HTTP_HOST} !^ 192.168.x.x[NC],这里的 ip 是机器本地 ip。
apache 用户超时设置
在 http.conf 中添加以下内容:
#Timeout:接收和发送数据的超时设置,秒数
Timeout 600
#KeepAlive: 是否支持持久联接(而不是每个请求建一个连接) ,设 off 关闭此功能
KeepAlive On
#MaxKeepAliveRequests:在持久连接期间,所允许的最大请求数量。设为 0 表示不作限制。建议
设为较高的数,以提高性能
MaxKeepAliveRequests 0
#KeepAliveTimeout:在同一个客户连接中,等待下一个请求的等待时间。
KeepAliveTimeout 15
优化调整
调整 apache 并发数
去掉 httpd.conf 文件中 # Include conf/extra/httpd-mpm.conf 前的#号
修改./extra/httpd-mpm.conf 文件中 prefork MPM 项为:
<IfModule mpm_prefork_module>
ServerLimit 2000
StartServers 10
MinSpareServers 10
MaxSpareServers 15
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>
指定 404 错误网页
定制个性化的 404 错误页面,在这个页面上可以看到很友好的提示信息。
修改/data/apache/conf/httpd.conf 文件
将
#ErrorDocument 404 /missing.html
改为:
ErrorDocument 404 http://192.168.x.x/missing.html
说明:
http://192.168.x.x/missing.html 为指定页面。
开启 deflate(Gzip)提升网页加载速度
加快 HTTP 请求返回内容的下载速度,增加用户体验,在 httpd.conf 配置文件中找到下面
行,将注释#去掉。
# LoadModule deflate_module modules/mod_deflate.so
在配置文件中最下方增加以下配置。
<IfModule mod_deflate.c>
DeflateCompressionLevel 6
AddOutputFilterByType DEFLATE text/html text/plaintext/xml
AddOutputFilter DEFLATE css js
</IfModule>
重启 apache
使用.htaccess 文件缓存图片
打开网站所在的根目录的.htaccess文件,如没有,请新建。
编辑文件如下:
# Image and Flash content Caching for One Month
<FilesMatch".(flv|gif|jpg|jpeg|png|ico|swf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
说明:
以上代码,是浏览器缓存 flv,gif,jpg,jpeg,png,ico,swf 格式的文件一个月。如果想改
变缓存时间请修改 max-age 值。
日志分割
cronolog 安装
目前项目中普遍采用Cronolog 工具实现 apache 日志分割。
上传安装包文件到服务器指定目录。
安装日志分割工具:
[root@AS5U2 root]#cd /data/soft
[root@AS5U2 hanweb_software]#tar -xvfzcronolog-1.6.2.tar.gz
[root@AS5U2 hanweb_software]#cd cronolog-1.6.2
[root@AS5U2 hanweb_software]#./configure–prefix=/data/cronolog
[root@AS5U2 hanweb_software]#make
[root@AS5U2 hanweb_software]#make install
安装完成之后然后将下面的命令添加到相应的主机里面(当然也可以放在配置文件的顶部,用于所有虚拟主机使用)。
或者
我们访问域名看下效果
至此,日志分割已经做完。
以上是关于linux下apache虚拟主机搭建以及优化的主要内容,如果未能解决你的问题,请参考以下文章
linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建