<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>运维博客 &#187; Apache</title>
	<atom:link href="http://www.ywbk.cc/category/apache/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ywbk.cc</link>
	<description>开发&#38;运维</description>
	<lastBuildDate>Thu, 28 May 2026 02:59:52 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.7.41</generator>
	<item>
		<title>CentOS 6配置apache2.4+tomcat7负载均衡集群(http_proxy方式)</title>
		<link>http://www.ywbk.cc/504.html</link>
		<comments>http://www.ywbk.cc/504.html#comments</comments>
		<pubDate>Mon, 20 Aug 2018 05:46:25 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=504</guid>
		<description><![CDATA[Apache HTTP Server（简称 Apache），是 Apache 软件基金协会的一个开放源码的网页 [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>Apache HTTP Server（简称 Apache），是 Apache 软件基金协会的一个开放源码的网页服务器，Apache 反应速度快，运行效率高，但只支持HTML等静态页面（加载插件后也可支持 PHP 页面）。Tomcat 是由 Apache 软件基金协会与 Sun 公司联合开发的一款Web服务器，它除了支持HTML等静态页面外，还支持JSP、Servlet 。在相同的运行环境下，Tomcat 对静态页面的反应速度没有 Apache 灵敏，生产环境使用 Apache 与 Tomcat 搭建负载均衡集群，可以提高网站并发。Apache+Tomcat搭建集群连接有三种方式：<a href="http://05bk.com/59.html" target="_blank">JK</a>、<a href="http://05bk.com/504.html" target="_blank">http_proxy</a>、<a href="http://05bk.com/503.html" target="_blank">ajp_proxy</a></p></blockquote>
<p>在开始下文之前，需要已安装了apache和tomcat，可参考：<a href="http://05bk.com/3.html" target="_blank">安装配置apache</a> 、<a title="Linux安装配置tomcat" href="http://05bk.com/5.html" target="_blank">安装配置tomcat</a></p>
<h2>1.准备两套tomcat环境</h2>
<pre class="prettyprint linenums">cp -a /usr/local/tomcat /usr/local/tomcat1
cp -a /usr/local/tomcat /usr/local/tomcat2
vim /usr/local/tomcat1/conf/server.xml
#修改tomcat1的标识名，这一步必须做
&lt;Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"&gt;
vim /usr/local/tomcat2/conf/server.xml
#修改tomcat2的远程停止服务端口，如果两台tomcat在不同机器上就不用修改
&lt;Server port="8006" shutdown="SHUTDOWN"&gt;
#修改tomcat2的HTTP监听端口，如果两台tomcat在不同机器上就不用修改
&lt;Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /&gt;
#修改tomcat2的AJP监听端口，如果两台tomcat在不同机器上就不用修改
&lt;Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /&gt;
#修改tomcat2的标识名，这一步必须做
&lt;Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2"&gt;
vim /usr/local/tomcat2/conf/context.xml
#要实现session复制，还需要在Context添加属性distributable="true"
&lt;Context distributable="true"&gt;
vim /usr/local/tomcat1/conf/context.xml
#同理，还需tomcat1的Context添加属性distributable="true"
&lt;Context distributable="true"&gt;
vim /usr/local/tomcat1/webapps/ROOT/test.jsp
#在tomcat1的wed路径下创建一个用于测试的页面
tomcat1 SessionID: &lt;%=session.getId() %&gt;
vim /usr/local/tomcat2/webapps/ROOT/test.jsp
#在tomcat2的wed路径下创建一个用于测试的页面
tomcat1 SessionID: &lt;%=session.getId() %&gt;</pre>
<h2>2.修改apache配置文件</h2>
<pre class="prettyprint linenums">vim /usr/local/apache2/conf/httpd.conf
#取消以下行前注释，载入所需模块、载入虚拟机配置
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
Include conf/extra/httpd-vhosts.conf
#增加默认主页index.jsp
DirectoryIndex index.html index.jsp
#再到最后添加：关闭正向代理、负载均衡的地址、权重等信息
ProxyRequests Off
&lt;proxy balancer://cluster&gt;
BalancerMember http://127.0.0.1:8080 loadfactor=1 route=jvm1
BalancerMember http://127.0.0.1:8081 loadfactor=1 route=jvm2
&lt;/proxy&gt;
#修改apache虚拟机配置文件如下
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
&lt;VirtualHost *:80&gt;
ServerAdmin admin@qq.com
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
&lt;/VirtualHost&gt;</pre>
<h2><strong>3.测试</strong></h2>
<p>重启tomcat和apache后(如果启动不起来会在相应日志里打印，查询并排除即可)，在浏览器地址栏输入http://&lt;server IP&gt;/test.jsp，可以看到使用的是tomcat1或者tomcat2下的test.jsp文件，一直刷新页面也是固定不变的，说明黏性Session设置没问题。</p>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/504.html">CentOS 6配置apache2.4+tomcat7负载均衡集群(http_proxy方式)</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/504.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS 6配置apache2.4+tomcat7负载均衡集群(ajp_proxy方式)</title>
		<link>http://www.ywbk.cc/503.html</link>
		<comments>http://www.ywbk.cc/503.html#comments</comments>
		<pubDate>Fri, 17 Aug 2018 05:46:22 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=503</guid>
		<description><![CDATA[Apache HTTP Server（简称 Apache），是 Apache 软件基金协会的一个开放源码的网页 [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>Apache HTTP Server（简称 Apache），是 Apache 软件基金协会的一个开放源码的网页服务器，Apache 反应速度快，运行效率高，但只支持HTML等静态页面（加载插件后也可支持 PHP 页面）。Tomcat 是由 Apache 软件基金协会与 Sun 公司联合开发的一款Web服务器，它除了支持HTML等静态页面外，还支持JSP、Servlet 。在相同的运行环境下，Tomcat 对静态页面的反应速度没有 Apache 灵敏，生产环境使用 Apache 与 Tomcat 搭建负载均衡集群，可以提高网站并发。Apache+Tomcat搭建集群连接有三种方式：<a href="http://05bk.com/59.html" target="_blank">JK</a>、<a href="http://05bk.com/504.html" target="_blank">http_proxy</a>、<a href="http://05bk.com/503.html" target="_blank">ajp_proxy</a></p></blockquote>
<p>在开始下文之前，需要已安装了apache和tomcat，可参考：<a href="http://05bk.com/3.html" target="_blank">安装配置apache</a> 、<a title="Linux安装配置tomcat" href="http://05bk.com/5.html" target="_blank">安装配置tomcat</a></p>
<h2>1.准备两套tomcat环境</h2>
<pre class="prettyprint linenums">cp -a /usr/local/tomcat /usr/local/tomcat1
cp -a /usr/local/tomcat /usr/local/tomcat2
vim /usr/local/tomcat1/conf/server.xml
#修改tomcat1的标识名，这一步必须做
&lt;Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"&gt;
vim /usr/local/tomcat2/conf/server.xml
#修改tomcat2的远程停止服务端口，如果两台tomcat在不同机器上就不用修改
&lt;Server port="8006" shutdown="SHUTDOWN"&gt;
#修改tomcat2的HTTP监听端口，如果两台tomcat在不同机器上就不用修改
&lt;Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /&gt;
#修改tomcat2的AJP监听端口，如果两台tomcat在不同机器上就不用修改
&lt;Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /&gt;
#修改tomcat2的标识名，这一步必须做
&lt;Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2"&gt;
vim /usr/local/tomcat2/conf/context.xml
#要实现session复制，还需要在Context添加属性distributable="true"
&lt;Context distributable="true"&gt;
vim /usr/local/tomcat1/conf/context.xml
#同理，还需tomcat1的Context添加属性distributable="true"
&lt;Context distributable="true"&gt;
vim /usr/local/tomcat1/webapps/ROOT/test.jsp
#在tomcat1的wed路径下创建一个用于测试的页面
tomcat1 SessionID: &lt;%=session.getId() %&gt;
vim /usr/local/tomcat2/webapps/ROOT/test.jsp
#在tomcat2的wed路径下创建一个用于测试的页面
tomcat1 SessionID: &lt;%=session.getId() %&gt;</pre>
<h2>2.修改apache配置文件</h2>
<pre class="prettyprint linenums">vim /usr/local/apache2/conf/httpd.conf
#取消以下行前注释，载入所需模块、载入虚拟机配置
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
Include conf/extra/httpd-vhosts.conf
#增加默认主页index.jsp
DirectoryIndex index.html index.jsp
#再到最后添加：关闭正向代理、负载均衡的地址、权重等信息
ProxyRequests Off
&lt;proxy balancer://cluster&gt;
BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:8010 loadfactor=1 route=jvm2
&lt;/proxy&gt;
#修改apache虚拟机配置文件如下
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
&lt;VirtualHost *:80&gt;
ServerAdmin admin@qq.com
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
&lt;/VirtualHost&gt;</pre>
<h2><strong>3.测试</strong></h2>
<p>重启tomcat和apache后(如果启动不起来会在相应日志里打印，查询并排除即可)，在浏览器地址栏输入http://&lt;server IP&gt;/test.jsp，可以看到使用的是tomcat1或者tomcat2下的test.jsp文件，一直刷新页面也是固定不变的，说明黏性Session设置没问题。</p>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/503.html">CentOS 6配置apache2.4+tomcat7负载均衡集群(ajp_proxy方式)</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/503.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS 6平台配置安装apache+tomcat负载均衡集群(jk方式)</title>
		<link>http://www.ywbk.cc/59.html</link>
		<comments>http://www.ywbk.cc/59.html#comments</comments>
		<pubDate>Sat, 21 Oct 2017 07:59:20 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[JK]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=59</guid>
		<description><![CDATA[Apache HTTP Server（简称 Apache），是 Apache 软件基金协会的一个开放源码的网页 [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>Apache HTTP Server（简称 Apache），是 Apache 软件基金协会的一个开放源码的网页服务器，Apache 反应速度快，运行效率高，但只支持HTML等静态页面（加载插件后也可支持 PHP 页面）。Tomcat 是由 Apache 软件基金协会与 Sun 公司联合开发的一款Web服务器，它除了支持HTML等静态页面外，还支持JSP、Servlet 。在相同的运行环境下，Tomcat 对静态页面的反应速度没有 Apache 灵敏，生产环境使用 Apache 与 Tomcat 搭建负载均衡集群，可以提高网站并发。Apache+Tomcat搭建集群连接有三种方式：<a href="http://05bk.com/59.html" target="_blank">JK</a>、<a href="http://05bk.com/504.html" target="_blank">http_proxy</a>、<a href="http://05bk.com/503.html" target="_blank">ajp_proxy</a></p></blockquote>
<p>在开始下文之前，需要已安装了apache和tomcat，可参考：<a href="http://05bk.com/3.html" target="_blank">安装配置apache</a> 、<a title="Linux安装配置tomcat" href="http://05bk.com/5.html" target="_blank">安装配置tomcat</a></p>
<h2>1.准备两套tomcat环境</h2>
<pre class="prettyprint linenums">cp -a /usr/local/tomcat /usr/local/tomcat1
cp -a /usr/local/tomcat /usr/local/tomcat2
vim /usr/local/tomcat2/conf/server.xml
#修改tomcat2的远程停止服务端口，如果两台tomcat在不同机器上就不用修改
&lt;Server port="8006" shutdown="SHUTDOWN"&gt;
#修改tomcat2的HTTP监听端口，如果两台tomcat在不同机器上就不用修改
&lt;Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /&gt;
#修改tomcat2的AJP监听端口，如果两台tomcat在不同机器上就不用修改
&lt;Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /&gt;
#修改tomcat2的标识名，这一步必须做
&lt;Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2"&gt;
vim /usr/local/tomcat2/conf/context.xml
#要实现session复制，还需要在Context添加属性distributable="true"
&lt;Context distributable="true"&gt;
vim /usr/local/tomcat1/conf/context.xml
#同理，还需tomcat1的Context添加属性distributable="true"
&lt;Context distributable="true"&gt;
vim /usr/local/tomcat1/webapps/ROOT/test.jsp
#在tomcat1的wed路径下创建一个用于测试的页面
tomcat1 SessionID: &lt;%=session.getId() %&gt;
vim /usr/local/tomcat2/webapps/ROOT/test.jsp
#在tomcat2的wed路径下创建一个用于测试的页面
tomcat1 SessionID: &lt;%=session.getId() %&gt;</pre>
<h2>2.编译生成mod_jk.so模块</h2>
<p>Apache之所以能够和Tomcat通讯就是依靠了tomcat-connectors(连接器)，<a href="http://archive.apache.org/dist/jakarta/tomcat-connectors/" target="_blank">官方下载地址</a>。而这个东西通讯协议就是AJP/1.3 ，这也是为什么我们每次启动Tomcat的时候除了我们常见的http通讯端口8080,但还有一个端口AJP 8009。其实多启动的这个8009端口就是为了与Apache通讯使用的，如果我们用不到Apache服务器那我们完全可以把Tomcat加载启动AJP服务关闭掉，减少内存占用提高效率。编译安装tomcat-connectors完成后会生成mod_jk.so，即Apache与Tomcat的连接模块，此模块附带提供集群和负载均衡的功能。JK分为两个版本1.x和2.x，其中2.x并不是最新的版本，它是JK的另外一个分支，后来没有继续开发，2.x版本已经废弃，通常使用1.x的版本。官方下载地址。</p>
<pre class="prettyprint linenums">#需要先安装依赖包，否则会报错
yum install glibc-headers gcc-c++ -y
wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.43-src.tar.gz
tar zxvf tomcat-connectors-1.2.43-src.tar.gz 
cd tomcat-connectors-1.2.43-src/native/
./configure --with-apxs=/usr/local/apache2/bin/apxs
make
cp apache-2.0/mod_jk.so /usr/local/apache2/modules/</pre>
<h2>3.添加mod_jK配置文件</h2>
<pre class="prettyprint linenums">vim /usr/local/apache2/conf/mod_jk.conf
#载入mod_jk.so
LoadModule jk_module modules/mod_jk.so
#指出mod_jk模块工作所需的工作文件workers.properties的路径
JkWorkersFile conf/workers.properties
#指定JK日志文件路径
#JkLogFile logs/mod_jk.log
#指定JK日志记录级别
JkLogLevel debug
#指定日志格式
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
#指定请求日志格式
JkRequestLogFormat "%w %V %T"
#把匹配的页面转发到负载均衡集群，loadbalancer在workers.properties中配置
JkMount  /*.do loadbalancer
JkMount  /*.jsp loadbalancer
# 指定apache解析的静态页面路径
JkAutoAlias /usr/local/apache2/htdocs</pre>
<h2>3.添加mod_jK服务器配置文件</h2>
<p>关于workers.properties更多参数解释可以网上搜索“workers.properties配置说明”</p>
<pre class="prettyprint linenums">vim /usr/local/apache2/conf/workers.properties
#定义名为loadbalancer的集群
worker.list=loadbalancer
#定义类型为负载平衡
worker.loadbalancer.type=lb
#定义集群包含的工作组
worker.loadbalancer.balance_workers=worker1,worker2
#下面的1为黏性Session，即同一会话中的请求都被派送到同一个tomcat实例
worker.loadbalancer.sticky_session=1
#设置worker1的属性：ajp端口、IP、类型、负载权重
worker.worker1.port=8009
worker.worker1.host=127.0.0.1
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
#设置worker2的属性
worker.worker2.port=8010
worker.worker2.host=127.0.0.1
worker.worker2.type=ajp13
worker.worker2.lbfactor=1</pre>
<h2>4.修改apache配置文件</h2>
<pre class="prettyprint linenums">vim /usr/local/apache2/conf/httpd.conf
#增加包含mod_jk.conf的语句
Include /usr/local/apache2/conf/mod_jk.conf</pre>
<h2><strong>5.测试</strong></h2>
<p>重启tomcat和apache后(如果启动不起来会在相应日志里打印，查询并排除即可)，在浏览器地址栏输入http://&lt;server IP&gt;/test.jsp，可以看到使用的是tomcat1或者tomcat2下的test.jsp文件，一直刷新页面也是固定不变的，说明黏性Session设置没问题。</p>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/59.html">CentOS 6平台配置安装apache+tomcat负载均衡集群(jk方式)</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/59.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS 6平台安装配置Apache+Tomcat整合(JK方式)</title>
		<link>http://www.ywbk.cc/6.html</link>
		<comments>http://www.ywbk.cc/6.html#comments</comments>
		<pubDate>Sun, 15 Oct 2017 10:33:06 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=6</guid>
		<description><![CDATA[Apache HTTP Server（简称 Apache），是 Apache 软件基金协会的一个开放源码的网页 [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>Apache HTTP Server（简称 Apache），是 Apache 软件基金协会的一个开放源码的网页服务器，可以在 Windows、Unix、Linux 等操作系统中运行，是最流行的Web服务器软件之一。Apache 反应速度快，运行效率高，但只支持HTML等静态页面（加载插件后也可支持 PHP 页面）。Apache Tomcat 是由 Apache 软件基金协会与 Sun 公司联合开发的一款Web服务器，它除了支持HTML等静态页面外，还支持JSP、Servlet 。在相同的运行环境下，Tomcat 对静态页面的反应速度没有 Apache 灵敏，整合 Apache 与 Tomcat 能使系统运行于一个良好环境下，提高系统效率。Apache本身缺乏处理JSP/Servlet的功能，为了能够处理对JSP/Servlet的请求，必须使用JSP/Servlet容器(如Tomcat)。</p></blockquote>
<p>在开始之前，你的服务器已经安装了apache和tomcat，可参考：编译安装<a title="Linux安装配置apache" href="http://05bk.com/3.html" target="_blank">配置apache</a> 、<a title="Linux安装配置tomcat" href="http://05bk.com/5.html" target="_blank">安装配置tomcat</a></p>
<h2>1.编译生成mod_jk.so模块</h2>
<p>Apache之所以能够和Tomcat通讯就是依靠了tomcat-connectors(连接器)，<a href="http://archive.apache.org/dist/jakarta/tomcat-connectors/" target="_blank">官方下载地址</a>。而这个东西通讯协议就是AJP/1.3 ，这也是为什么我们每次启动Tomcat的时候除了我们常见的http通讯端口8080,但还有一个端口AJP 8009。其实多启动的这个8009端口就是为了与Apache通讯使用的，如果我们用不到Apache服务器那我们完全可以把Tomcat加载启动AJP服务关闭掉，减少内存占用提高效率。编译安装tomcat-connectors完成后会生成mod_jk.so，即Apache与Tomcat的连接模块，此模块附带提供集群和负载均衡的功能。JK分为两个版本1.x和2.x，其中2.x并不是最新的版本，它是JK的另外一个分支，后来没有继续开发，2.x版本已经废弃，通常使用1.x的版本。官方下载地址。</p>
<pre class="prettyprint linenums">#需要先安装依赖包，否则会报错
yum install glibc-headers gcc-c++ -y
wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.43-src.tar.gz
tar zxvf tomcat-connectors-1.2.43-src.tar.gz 
cd tomcat-connectors-1.2.43-src/native/
./configure --with-apxs=/usr/local/apache2/bin/apxs
make
cp apache-2.0/mod_jk.so /usr/local/apache2/modules/</pre>
<h2>2.添加mod_jK配置文件</h2>
<pre class="prettyprint linenums">vim /usr/local/apache2/conf/mod_jk.conf
#载入mod_jk.so
LoadModule jk_module /usr/local/apache2/modules/mod_jk.so
# 指出mod_jk模块工作所需的工作文件workers.properties的路径
JkWorkersFile /usr/local/apache2/conf/workers.properties
#指定JK日志文件路径
#JkLogFile /var/log/httpd/mod_jk.log
#指定日志记录级别
JkLogLevel info
#指定日志格式
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
#指定请求日志格式
JkRequestLogFormat "%w %V %T"
#把匹配的页面转发到指定服务器，worker1在workers.properties中配置
JkMount /servlet/* worker1
JkMount /*.jsp worker1
JkMount /*.do worker1
# 指定apache解析的静态页面路径
JkAutoAlias /usr/local/apache2/htdocs</pre>
<h2>3.添加mod_jK服务器配置文件</h2>
<pre class="prettyprint linenums">vim /usr/local/apache2/conf/workers.properties
#定义名为aworker1的工作程序
worker.list=worker1
#设置worker1的属性
worker.worker1.port= 8009
worker.worker1.host= 127.0.0.1
worker.worker1.type= ajp13
worker.worker1.lbfactor= 1
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1 
worker.worker1.socket_timeout=300</pre>
<h2>4.修改apache配置文件</h2>
<pre class="prettyprint linenums">vim /usr/local/apache2/conf/httpd.conf
#增加包含mod_jk.conf的语句
Include /usr/local/apache2/conf/mod_jk.conf</pre>
<h2>5.创建测试文件</h2>
<pre class="prettyprint linenums">#在tomcat默认web路径下创建html
vim /usr/local/tomcat/webapps/ROOT/test.html
This is tomcat's html page
#在tomcat默认web路径下创建jsp
vim /usr/local/tomcat/webapps/ROOT/test.jsp
&lt;%@page language="java" import="java.util.*"%&gt;
this is tomcat's jsp page &lt;%out.println(new Date());%&gt;
#在apche默认web路径下创建html
vim /usr/local/apache2/htdocs/test.html
This is apache's html page
#在apache默认web路径下创建jsp
vim /usr/local/apache2/htdocs/test.jsp
&lt;%@page language="java" import="java.util.*"%&gt;
this is apache's jsp page &lt;%out.println(new Date());%&gt;</pre>
<h2><strong>6.测试</strong></h2>
<p>重启tomcat和apache后(如果启动不起来会在相应日志里打印，查询并排除即可)，在浏览器地址栏输入http://&lt;server IP&gt;/test.jsp，可以看到使用的是tomcat下的test.jsp文件，没有使用apahce下的。在浏览器地址栏输入http://&lt;server IP&gt;/test.html，可以看到使用的apahce下test.html文件，没有使用tomcat下的。关于项目部署，从测试效果来看，在apahce服务器下只需放html,js,css,img等文件，在tomcat下放整个war包即可。</p>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/6.html">CentOS 6平台安装配置Apache+Tomcat整合(JK方式)</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/6.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache与Tomcat三种连接方式JK、http_proxy、ajp_proxy</title>
		<link>http://www.ywbk.cc/500.html</link>
		<comments>http://www.ywbk.cc/500.html#comments</comments>
		<pubDate>Thu, 12 Oct 2017 05:10:16 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[ajp_proxy]]></category>
		<category><![CDATA[http_proxy]]></category>
		<category><![CDATA[JK]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=500</guid>
		<description><![CDATA[为什么要让Apache与Tomcat之间进行连接？事实上Tomcat本身已经提供了HTTP服务，该服务默认的端 [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>为什么要让Apache与Tomcat之间进行连接？事实上Tomcat本身已经提供了HTTP服务，该服务默认的端口是8080，也可以改为80。既然Tomcat本身已经可以提供动态加静态web服务，为什么还要引入Apache或者其他的一些专门的HTTP服务器呢？原因是tomcat对静态页面并发处理能力较差，通过与apache链接后可以实现：提升对静态文件的处理性能、实现负载均衡集群、无缝的升级应用程序。</p></blockquote>
<h2>JK</h2>
<p>这是最常见的方式，你可以在网上找到很多关于配置JK的网页，当然最全的还是其官方所提供的文档。JK本身有两个版本分别是1和2，而版本2不是最新版，是一个分支，早已经废弃了，以后不再有新版本的推出了，所以建议你采用版本1。</p>
<p>JK是通过AJP协议与Tomcat服务器进行通讯的，Tomcat默认的AJPConnector的端口是8009。JK本身提供了一个监控以及管理的页面jkstatus，通过jkstatus可以监控JK目前的工作状态以及对到tomcat的连接进行设置。</p>
<p>AJP(ApacheJServProtocol)是定向包（面向包）协议。采用二进制形式代替文本形式，以提高性能。WEB服务器通过TCP连接SERVLET容器。WebServer一般维持和WebContainer的多个TCPConnecions，即TCP连接池，多个request/respons循环重用同一个Connection。但是当Connection被分配（Assigned）到某个请求时，该请求完成之前，其他请求不得使用该连接。</p>
<h2>http_proxy</h2>
<p>这是利用Apache自带的mod_proxy模块使用代理技术来连接Tomcat。在配置之前请确保是否使用的是2.2.x版本的Apache服务器。因为2.2.x版本对这个模块进行了重写，大大的增强了其功能和稳定性。http_proxy模式是基于HTTP协议的代理，因此它要求Tomcat必须提供HTTP服务，也就是说必须启用Tomcat的HTTP Connector。</p>
<h2>ajp_proxy</h2>
<p>ajp_proxy连接方式也是由mod_proxy模块所提供的功能。连接的是Tomcat的AJP Connector所在的端口。</p>
<h2>三者比较</h2>
<p>相对于JK的连接方式，http_proxy和ajp_proxy在配置上是比较简单的，灵活性方面也一点都不逊色。但就稳定性而言就不像JK这样久经考验，因此，如果是应用于关键的互联网网站，还是建议采用JK的连接方式。</p>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/500.html">Apache与Tomcat三种连接方式JK、http_proxy、ajp_proxy</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/500.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用cronolog切割Apache日志安装配置</title>
		<link>http://www.ywbk.cc/241.html</link>
		<comments>http://www.ywbk.cc/241.html#comments</comments>
		<pubDate>Mon, 09 Oct 2017 02:56:13 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[cronolog]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=241</guid>
		<description><![CDATA[Apache服务器默认日志文件是不分割的，一个整文件既不易于管理，也不易于分析统计。本文主要讲解使用crono [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>Apache服务器默认日志文件是不分割的，一个整文件既不易于管理，也不易于分析统计。本文主要讲解使用cronolog切割apache服务器日志，什么不用apache自带的日志分割工具？apache自带的日志分割工具rotatelogs，据专家说在进行日志切割时容易丢日志，所以这里我们就用cronolog来做日志切割。</p>
<p>cronolog 是一个简单的过滤程序，读取日志文件条目从标准输入和输出的每个条目并写入指定的日志文件的文件名模板和当前的日期和时间。cronolog主要和Web服务器配置使用，特别是Apache服务器，安装cronolog后，可以将日志文件按时间分割，易于管理和分析。</p></blockquote>
<h2>1.安装cronolog</h2>
<pre class="prettyprint linenums">wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
tar zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make &amp;&amp; make install
which cronolog</pre>
<h2>2.配置切割apache日志</h2>
<p>这里需要先 <a href=" http://05bk.com/3.htm" target="_blank">安装apache服务器</a>，然后再编辑httpd.conf文件</p>
<pre class="prettyprint linenums">vim /usr/local/apache2/conf/httpd.conf
#将其中“CustomLog "logs/access_log" combined”修改为：
CustomLog "|/usr/local/sbin/cronolog /log/www/access_%Y%m%d.log"combined
#其中%Y%m%d为分割方式，即为“年月日”，然后保存后重启apache
/usr/local/apache2/bin/apachectl restart</pre>
<p>cronolog定义日志名称除了上述“%Y%m%d”，还支持以下转义字符：</p>
<pre class="prettyprint linenums">d    当月中的天数 (01 .. 31)
j    当年中的天数 (001 .. 366)
m    月数 (01 .. 12)
U    当年中的星期数，以周日作为一周开始,其中第一周为首个含星期天的星期(00..53)
W    当年中的星期数，以星期一作为一周的开始,其中第一周为首个含星期天的星期(00..53)
w    工作日数(0 .. 6, 0表示星期天)
x    该locale下的日期表示(e.g."13/04/97")
y    两位数的年份(00 .. 99)
Y    四位数的年份(1970 .. 2038)
H    小时(00..23)
I    小时(01..12)
p    该locale下的AM或PM标识
M    分钟(00..59)
S    秒 (00..61, which allows for leap seconds)
X    该locale下时间表示符(e.g.:"15:12:47")
Z    时区。若时区不能确定，则无意义</pre>
<h2> 3.切割效果演示</h2>
<pre class="prettyprint linenums">ll /log/www/
-rw-r--r-- 1 root root   16028 Dec 26 15:16 access_20131225.log
-rw-r--r-- 1 root root 2406307 Dec 26 23:59 access_20131226.log
-rw-r--r-- 1 root root 8292792 Dec 27 23:59 access_20131227.log
-rw-r--r-- 1 root root 4682211 Dec 28 18:56 access_20131228.log</pre>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/241.html">使用cronolog切割Apache日志安装配置</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/241.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2配置文件详解(4)-虚拟主机配置httpd-vhost.conf</title>
		<link>http://www.ywbk.cc/238.html</link>
		<comments>http://www.ywbk.cc/238.html#comments</comments>
		<pubDate>Fri, 06 Oct 2017 07:57:17 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=238</guid>
		<description><![CDATA[#这里重点介绍一下基于多端口的配置 NameVirtualHost *:81 NameVirtualHost  [&#8230;]]]></description>
				<content:encoded><![CDATA[<pre class="prettyprint linenums">#这里重点介绍一下基于多端口的配置
NameVirtualHost *:81
NameVirtualHost *:82
NameVirtualHost *:83

&lt;VirtualHost *:81&gt;
ServerAdmin jafy@jafy00.com
DocumentRoot /www1
ServerName www.jafy00.com
ErrorLog logs/www1-error.log
CustomLog logs/www1-access_log common
&lt;/VirtualHost&gt;

&lt;VirtualHost *:82&gt;
&lt;Directory "/www2" &gt;
Options FollowSymLinks
#Deny from all
Allow from all
&lt;/Directory&gt;
ServerAdmin jafy@jafy00.com
DocumentRoot /www2
ServerName www.jafy00.com
DirectoryIndex index.php index.html
ErrorLog logs/www2-error.log
CustomLog logs/www2-access_log combined
&lt;/VirtualHost&gt;</pre>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/238.html">Apache2配置文件详解(4)-虚拟主机配置httpd-vhost.conf</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/238.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2配置文件详解(3)-主配置httpd.conf</title>
		<link>http://www.ywbk.cc/232.html</link>
		<comments>http://www.ywbk.cc/232.html#comments</comments>
		<pubDate>Sat, 30 Sep 2017 09:30:33 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=232</guid>
		<description><![CDATA[#设置WEB文档根目录的默认属性 &#60;Directory /&#62; Options FollowSymL [&#8230;]]]></description>
				<content:encoded><![CDATA[<pre class="prettyprint linenums">#设置WEB文档根目录的默认属性
&lt;Directory /&gt;
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
&lt;/Directory&gt;
#设置DocumentRoot指定目录的属性
&lt;Directory "/usr/local/apache-2.2.6/htdocs"&gt;
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
&lt;/Directory&gt;
#设置默认目录资源列表文件
&lt;IfModule dir_module&gt;
DirectoryIndex index.html
&lt;/IfModule&gt;
#拒绝对.ht开头文件的访问,以保护.htaccess文件
&lt;FilesMatch "^\.ht"&gt;
Order allow,deny
Deny from all
Satisfy All
&lt;/FilesMatch&gt;

&lt;IfModule log_config_module&gt;
#定义访问日志的格式
LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common
    &lt;IfModule logio_module&gt;
    LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    &lt;/IfModule&gt;
#指定访问日志及使用的格式
CustomLog logs/access_log combined
&lt;/IfModule&gt;
#设定默认CGI脚本目录及别名
ScriptAlias /cgi-bin/ "/usr/local/apache-2.2.6/cgi-bin/"

#在以线程式MPM(worker)运行的Apache中设置用来与CGI守护进程通信的套接字文件名前缀
&lt;IfModule cgid_module&gt;
Scriptsock logs/cgisock
&lt;/IfModule&gt;
#设定默认CGI脚本目录的属性
&lt;Directory "/usr/local/apache-2.2.6/cgi-bin"&gt;
AllowOverride None
Options None
Order allow,deny
Allow from all
&lt;/Directory&gt;
#设定默认MIME内容类型
DefaultType text/plain
&lt;IfModule mime_module&gt;
##指定MIME类型映射文件
TypesConfig conf/mime.types
#增加.Z .tgz的类型映射
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
&lt;/IfModule&gt;
#启用内存映射
EnableMMAP on
##使用操作系统内核的sendfile支持来将文件发送到客户端
EnableSendfile on
#指定多路处理模块(MPM)配置文件并将其附加到主配置文件
Include conf/extra/httpd-mpm.conf
#指定多语言错误应答配置文件并将其附加到主配置文件
Include conf/extra/httpd-multilang-errordoc.conf
#指定目录列表配置文件并将其附加到主配置文件
#Include conf/extra/httpd-autoindex.conf
#指定语言配置文件并将其附加到主配置文件
Include conf/extra/httpd-languages.conf
#指定用户主目录配置文件并将其附加到主配置文件
#Include conf/extra/httpd-userdir.conf
#指定用于服务器信息和状态显示的配置文件并将其附加到主配置文件
#Include conf/extra/httpd-info.conf
#指定提供Apache文档访问的配置文件并将其附加到配置文件
#Include conf/extra/httpd-manual.conf
#指定DAV配置文件并将其附加到主配置文件
#Include conf/extra/httpd-dav.conf
#指定与Apache服务自身相关的配置文件并将其附加到主配置文件
Include conf/extra/httpd-default.conf
#指定mod_deflate压缩模块配置文件并将其附加到主配置文件
Include conf/extra/httpd-deflate.conf
#指定mod_expires模块配置文件并将其附加到主配置文件
Include conf/extra/httpd-expires.conf
##指定虚拟主机配置文件并将其附加到主配置文件
#Include conf/extra/httpd-vhosts.conf
#指定SSL配置文件并将其附加到主配置文件
Include conf/extra/httpd-ssl.conf
##SSL默认配置
&lt;IfModule ssl_module&gt;
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
&lt;/IfModule&gt;

#配置多路处理模块(MPM) httpd-mpm.conf
首先说一下原理:
prefork模式
这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器，它的工作方式类似于Apache 1.3。它适合于没有线程安全库，需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM，这样若一个请求出现问题就不会影响到其他请求。
这个MPM具有很强的自我调节能力，只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰，同时又不能太大，以致需要使用的内存
超出物理内存的大小。
worker模式
此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求，所以可以处理海量请求，而系统资源的开销小于基于进程的MPM。但是，它也使用了多进程，每个进程又有多个线程，以获得基于进程的MPM的稳定性。
控制这个MPM的最重要的指令是，控制每个子进程允许建立的线程数的ThreadsPerChild指令，和控制允许建立的总线程数的MaxClients指令

#设置prefork多路处理模块
&lt;IfModule mpm_prefork_module&gt;
StartServers          5
MinSpareServers       5
MaxSpareServers      10
ServerLimit　　　　8000
MaxClients         8000
MaxRequestsPerChild   0
&lt;/IfModule&gt;
StartServers：设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。
MinSpareServers：设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于 MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。
MaxSpareServers：设置空闲子进程的最大数量。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。如果你将该指令的值设置为比MinSpareServers 小,Apache将会自动将其修改成"MinSpareServers+1"。
ServerLimit：服务器允许配置的进程数上限。只有在你需要将MaxClients设置成高于默认值256的时候才需要使用。要将此指令的值保持和MaxClients一样。修改此指令的值必须完全停止服务后再启动才能生效，以restart方式重启动将不会生效。
MaxClients：用于伺服客户端请求的最大请求数量（最大子进程数），任何超过MaxClients限制的请求都将进入等候队列。默认值是256，如果要提高这个值必须同时提高ServerLimit的值。笔者建议将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台4G内存的机器，那么初始值就是4000/2=2000。
MaxRequestsPerChild：设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后，子进程将会结束。如果MaxRequestsPerChild为"0"，子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处：可以防止(偶然的)内存泄漏无限进行而耗尽内存；
给进程一个有限寿命，从而有助于当服务器负载减轻的时候减少活动进程的数量。
如果设置为非零值，建议设为10000-30000之间的一个值。
公式：MaxClients&lt;=ServerLimit

#设置worker多路处理模块
&lt;IfModule mpm_worker_module&gt;
StartServers          5
ServerLimit          20
ThreadLimit         200
MaxClients         4000
MinSpareThreads      25
MaxSpareThreads   250
ThreadsPerChild     200
MaxRequestsPerChild   0
&lt;/IfModule&gt;
StartServers：设置服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。
ServerLimit：服务器允许配置的进程数上限。只有在你需要将MaxClients和ThreadsPerChild设置成需要超过默认值16个子进程的时候才需要使用这个指令。不要将该指令的值设置的比MaxClients 和ThreadsPerChild需要的子进程数量高。修改此指令的值必须完全停止服务后再启动才能生效，以restart方式重启动将不会生效。
ThreadLimit：设置每个子进程可配置的线程数ThreadsPerChild上限,该指令的值应当和ThreadsPerChild可能达到的最大值保持一致。修改此指令的值必须完全停止服务后再启动才能生效，以restart方式重启动将不会生效。
MaxClients：用于伺服客户端请求的最大接入请求数量（最大线程数）。任何超过MaxClients限制的请求都将进入等候队列。默认值是"400"，16 (ServerLimit)乘以25
(ThreadsPerChild)的结果。因此要增加MaxClients的时候，你必须同时增加 ServerLimit的值。笔者建议将初始值设为(以Mb为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台4G内存的机器，那么初始值就是4000/2=2000。
MinSpareThreads：最小空闲线程数,默认值是"75"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少，子进程将产生新的空闲线程。
MaxSpareThreads：设置最大空闲线程数。默认值是"250"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多，子进程将杀死多余的空闲线程。
MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正你设置的值：worker要求其大于等于 MinSpareThreads加上ThreadsPerChild的和。
ThreadsPerChild：每个子进程建立的线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。每个子进程所拥有的所有线程的总数要足够大，以便可以处理可能的请求高峰。
MaxRequestsPerChild：设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后，子进程将会结束。如果MaxRequestsPerChild为"0"，子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处：可以防止(偶然的)内存泄漏无限进行而耗尽内存；
给进程一个有限寿命，从而有助于当服务器负载减轻的时候减少活动进程的数量。
如果设置为非零值，建议设为10000-30000之间的一个值。
公式：
ThreadLimit &gt;= ThreadsPerChild
MaxClients &lt;= ServerLimit * ThreadsPerChild 必须是ThreadsPerChild的倍数
MaxSpareThreads &gt;= MinSpareThreads+ThreadsPerChild
#配置Apache服务器默认设置 httpd-default.conf
Timeout 300
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 5
UseCanonicalName Off
AccessFileName .htaccess
ServerTokens Prod
ServerSignature Off
HostnameLookups Off

Timeout：设置服务器在断定请求失败前等待的秒数。默认值300。
KeepAlive：设置是否启用HTTP持久链接，On 代表打开，Off 代表关闭。如果用于同一页面包含大量静态文件的应用，设置为On，以提高性能；如果用于主要为动态页面的应用，
设置为Off，以节约内存资源；如果服务器前跑有squid或者其它七层设备，设置为On。
MaxKeepAliveRequests：限制当启用KeepAlive时，每个连接允许的请求数量。如果将此值设为"0"，将不限制请求的数目。笔者建议将此值设为100-500之间的一个值，以确保最优
的服务器性能。
KeepAliveTimeout：设置持久链接中服务器在两次请求之间等待的秒数。对于高负荷服务器来说，KeepAliveTimeout值较大会导致一些性能方面的问题：超时值越大，与空闲客户
端保持连接的进程就越多。
UseCanonicalName：配置服务器如何确定它自己的域名，可选值为On | Off | DNS。DNS用于为大量基于IP的虚拟主机支持那些古董级的不提供"Host:"头的浏览器使用。笔者建议设置为Off。
AccessFileName：设置分布式配置文件的名字，默认为.htaccess。如果为某个目录启用了分布式配置文件功能，那么在向客户端返回其中的文档时，服务器将在这个文档所在的各级目录中查找此配置文件，因此会带来性能问题，笔者建议关闭分布式配置文件功能。
ServerTokens：控制服务器回应给客户端的"Server:"应答头是否包含关于服务器操作系统类型和编译进的模块描述信息，同时还控制着 ServerSignature指令的显示内容。可选值
为Full | OS | Minor | Minimal | Major | Prod。笔者建议设置为显示最少信息的Prod。
ServerSignature：配置服务器生成页面的页脚，可选值为On | Off | EMail。采用On会简单的增加一行关于服务器版本和正在伺服的虚拟主机的ServerName，而EMail设置会额外创建一个指向 ServerAdmin的"mailto:"部分。建议使用默认值Off。
HostnameLookups：设置是否启用对客户端IP的DNS查找，可选值为On | Off | Double。DNS查询会造成明显的时间消耗，建议设置为Off。

#配置mod_deflate压缩模块 httpd-deflate.conf
mod_deflate模块提供了DEFLATE输出过滤器，允许服务器在将输出内容发送到客户端以前进行压缩，以节约带宽。
编辑mod_deflate压缩模块设置文件：

&lt;IfModule mod_deflate.c&gt;
DeflateMemLevel 9
DeflateWindowSize 15
DeflateBufferSize 8096
DeflateCompressionLevel 8
## 调试时去掉下面5行前的注释符，用以记录压缩日志
#DeflateFilterNote Input instream
#DeflateFilterNote Output outstream
#DeflateFilterNote Ratio ratio
#LogFormat '"%r" %b %{outstream}n/%{instream}n (%{ratio}n%%) "%{User-agent}i"' deflate
#CustomLog logs/deflate_log deflate
## 插入DEFLATE过滤器，以启用输出压缩
SetOutputFilter DEFLATE
## Netscape 4.x 有一些问题，仅压缩txt/html类型
BrowserMatch ^Mozilla/4 gzip-only-text/html
## Netscape 4.06-4.08不能处理任何压缩内容，不进行压缩
BrowserMatch ^Mozilla/4.0[678] no-gzip
## MSIE 会伪装成 Netscape ，但是事实上它没有问题
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
## 设置图片、mp3、压缩格式文件等不需要进行压缩内容
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
## 确保代理不会发送错误的内容
Header append Vary User-Agent env=!dont-vary
&lt;/IfModule&gt;

DeflateMemLevel：指定zlib在压缩时最多可以使用多少内存，取值范围在1到9之间。
DeflateWindowSize：定义zlib压缩窗口(compression window)的大小，取值范围在1到15之间，通常窗口越大压缩效果越好。
DeflateBufferSize：定义zlib一次压缩的片断的字节数，默认为8096。
DeflateCompressionLevel：设定压缩程度，越高的压缩程度就会有越好的压缩效果，同时也意味着占用越多的CPU资源。取值范围在 1(最低压缩率) 到 9(最高压缩率)之间，如果
不设置此指令，默认为zlib的默认值。
DeflateFilterNote：在日志中放置压缩率标记。
语法为：DeflateFilterNote type notename
notename就表示这个压缩率标记的名字，你可以为了某种统计目的将这个标记的名字添加到访问日志中。
type指定notename标记所记录的数据类型：Input，在标记中存储过滤器输入流的字节数；Output，在标记中存储过滤器输出流的字节数；Ratio，在标记中存储过滤器的压缩比(输
出/输入*100)，这是type的默认值。
SetOutputFilter：设置用于在服务器应答发送到客户端之前使用的过滤器。如果多于一个过滤器，必须按照处理内容的顺序用分号(;)分隔。
BrowserMatch：基于User-Agent头有条件地设置环境变量。
SetEnvIfNoCase：根据大小写无关的客户端请求属性设置环境变量。
Headers：配置HTTP应答头。这个指令可以替换、合并、删除HTTP应答头。应答头紧跟在内容处理器和输出过滤器完工之后生成，这时候才能对头进行修改。

#配置mod_expires模块
这个模块控制服务器应答时的Expires头内容和Cache-Control头的max-age指令。有效期(expiration date)可以设置为相对于源文件的最后修改时刻或者客户端的访问时刻。这些
HTTP头向客户端表明了文档的有效性和持久性。如果有缓存，文档就可以从缓存(除已经过期)而不是从服务器读取。接着，客户端考察缓存中的副本，看看是否过期或者失效，以
决定是否必须从服务器获得更新。
编辑mod_expires设置文件：httpd-expires.conf

## mod_expires设置文件
&lt;IfModule mod_expires.c&gt;
ExpiresActive on
ExpiresDefault A300
ExpiresByType text/html A300
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
ExpiresByType text/css A2592000
ExpiresByType text/js A2592000
ExpiresByType text/javascript A2592000
ExpiresByType application/x-javascript A2592000
&lt;/IfModule&gt;

ExpiresActive：对其作用范围内的文档启用或禁用产生Expires和Cache-Control头的功能。若设置为 Off 则不会为其作用范围内的任何文档生成Expires和Cache-Control头(除非
被更低一层的规则改写，比如.htaccess文件)。若设置为 On 则会按照ExpiresByType和ExpiresDefault指令定义的标准为其作用范围内的文档生成Expires和Cache-Control 头。
注意，这个指令并不保证Expires或Cache-Control头一定会产生。如果定义的标准不规范，将不会产生这两个头，其效果是好像从未设置过这个指令一样。
ExpiresByType：为指定MIME类型的文档配置Expires头的值。
语法为：ExpiresByType MIME-type &lt;code&gt;seconds
seconds参数设置了添加到基准时间以构造有效期限的秒数。Cache-Control: max-age的计算方法是从有效期减去当前请求时间并转化为秒数。
基准时刻可以是源文件的最后修改时刻或者客户端对源文件的访问时刻，至于使用那一个则由&lt;code&gt;指定。"M"表示源文件的最后修改时刻，"A"表示客户端对源文件的访问时刻。
需要注意的是&lt;code&gt;和seconds之间没有空格。如果使用"M"，所有当前缓存中的文档副本都将在同一时刻过期，这个可能对定期更新的URL(比如位于同一位置的每周通告)很有好处
。如果使用"A"，则每个客户端所得到的有效期是不一样的，这个可能对那些几乎不更新的图片文件很有好处，特别是对于一组都引用了相同图片的相关文档。
ExpiresDefault：设置其作用范围内的所有文档的默认有效期的计算方法，它可以被ExpiresByType指令基于MIME类型被改写。
语法为：ExpiresDefault &lt;code&gt;seconds
&lt;code&gt;seconds同ExpiresByType一致。</pre>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/232.html">Apache2配置文件详解(3)-主配置httpd.conf</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/232.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2配置文件详解(2)-动态DSO模块说明</title>
		<link>http://www.ywbk.cc/223.html</link>
		<comments>http://www.ywbk.cc/223.html#comments</comments>
		<pubDate>Mon, 25 Sep 2017 02:01:52 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[挂载]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=223</guid>
		<description><![CDATA[#如果需要提供基于文本文件的认证,加载此模块，否则注释掉 LoadModule authn_file_modu [&#8230;]]]></description>
				<content:encoded><![CDATA[<pre class="prettyprint linenums">#如果需要提供基于文本文件的认证,加载此模块，否则注释掉
LoadModule authn_file_module modules/mod_authn_file.so
#如果需要提供基于DBM文件的认证,加载此模块,否则注释掉
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#如果需要提供匿名用户认证,加载此模块,否则注释掉
#LoadModule authn_anon_module modules/mod_authn_anon.so
#如果需要提供基于SQL数据库的认证,加载此模块,否则注释掉
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#如果需要在未正确配置认证模块的情况下简单拒绝一切认证信息,加载此模块,否则注释掉
LoadModule authn_default_module modules/mod_authn_default.so
#此模块提供基于主机名、IP地址、请求特征的访问控制,Allow、Deny指令需要,推荐加载。
LoadModule authz_host_module modules/mod_authz_host.so
#如果需要使用纯文本文件为组提供授权支持,加载此模块,否则注释掉
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#如果需要提供基于每个用户的授权支持,加载此模块,否则注释掉
LoadModule authz_user_module modules/mod_authz_user.so
#如果需要使用DBM文件为组提供授权支持,加载此模块,否则注释掉
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#如果需要基于文件的所有者进行授权,加载此模块,否则注释掉
#LoadModule authz_owner_module modules/mod_authz_owner.so
#如果需要在未正确配置授权支持模块的情况下简单拒绝一切授权请求,加载此模块,否则注释掉
LoadModule authz_default_module modules/mod_authz_default.so
#如果需要提供基本的HTTP认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块
LoadModule auth_basic_module modules/mod_auth_basic.so
##如果需要提供HTTP MD5摘要认证,加载此模块,否则注释掉,此模块至少需要同时加载一个认证支持模块和一个授权支持模块
#LoadModule auth_digest_module modules/mod_auth_digest.so
#此模块提供文件描述符缓存支持,从而提高Apache性能,推荐加载,但请小心使用
LoadModule file_cache_module modules/mod_file_cache.so
#此模块提供基于URI键的内容动态缓存(内存或磁盘),从而提高Apache性能,必须与mod_disk_cache/mod_mem_cache同时使用,推荐加载
LoadModule cache_module modules/mod_cache.so
#此模块为mod_cache提供基于磁盘的缓存管理,推荐加载
LoadModule disk_cache_module modules/mod_disk_cache.so
#此模块为mod_cache提供基于内存的缓存管理,推荐加载
LoadModule mem_cache_module modules/mod_mem_cache.so
#如果需要管理SQL数据库连接，为需要数据库功能的模块提供支持,加载此模块,否则注释掉(推荐)
#LoadModule dbd_module modules/mod_dbd.so
#此模块将所有I/O操作转储到错误日志中,会导致在日志中写入及其海量的数据,只建议在发现问题并进行调试的时候使用
#LoadModule dumpio_module modules/mod_dumpio.so
#如果需要使用外部程序作为过滤器,加载此模块(不推荐),否则注释掉
#LoadModule ext_filter_module modules/mod_ext_filter.so
#如果需要实现服务端包含文档(SSI)处理,加载此模块(不推荐),否则注释掉
#LoadModule include_module modules/mod_include.so
#如果需要根据上下文实际情况对输出过滤器进行动态配置,加载此模块,否则注释掉
LoadModule filter_module modules/mod_filter.so
#如果需要服务器在将输出内容发送到客户端以前进行压缩以节约带宽,加载此模块(推荐),否则注释掉
LoadModule deflate_module modules/mod_deflate.so
##如果需要记录日志和定制日志文件格式,加载此模块(推荐),否则注释掉
LoadModule log_config_module modules/mod_log_config.so
#如果需要对每个请求的输入/输出字节数以及HTTP头进行日志记录,加载此模块,否则注释掉
#LoadModule logio_module modules/mod_logio.so
#如果允许Apache修改或清除传送到CGI脚本和SSI页面的环境变量,加载此模块,否则注释掉
LoadModule env_module modules/mod_env.so
#如果允许通过配置文件控制HTTP的"Expires:"和"Cache-Control:"头内容,加载此模块(推荐),否则注释掉
LoadModule expires_module modules/mod_expires.so
#如果允许通过配置文件控制任意的HTTP请求和应答头信息,加载此模块,否则注释掉
LoadModule headers_module modules/mod_headers.so
#如果需要实现RFC1413规定的ident查找,加载此模块(不推荐),否则注释掉
#LoadModule ident_module modules/mod_ident.so
#如果需要根据客户端请求头字段设置环境变量,加载此模块,否则注释掉
LoadModule setenvif_module modules/mod_setenvif.so
#此模块是mod_proxy的扩展,提供Apache JServ Protocol支持,只在必要时加载
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#此模块是mod_proxy的扩展,提供负载均衡支持,只在必要时加载
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#如果需要根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码),加载此模块,否则注释掉
LoadModule mime_module modules/mod_mime.so
#如果允许Apache提供DAV协议支持,加载此模块,否则注释掉
#LoadModule dav_module modules/mod_dav.so
#此模块生成描述服务器状态的Web页面,只建议在追踪服务器性能和问题时加载
#LoadModule status_module modules/mod_status.so
#如果需要自动对目录中的内容生成列表(类似于"ls"或"dir"命令),加载此模块(会带来安全问题,不推荐),否则注释掉
#LoadModule autoindex_module modules/mod_autoindex.so
#如果需要服务器发送自己包含HTTP头内容的文件,加载此模块,否则注释掉
#LoadModule asis_module modules/mod_asis.so
#如果需要生成Apache配置情况的Web页面,加载此模块(会带来安全问题,不推荐),否则注释掉
#LoadModule info_module modules/mod_info.so
#如果需要在非线程型MPM(prefork)上提供对CGI脚本执行的支持,加载此模块,否则注释掉
#LoadModule cgi_module modules/mod_cgi.so
#此模块在线程型MPM(worker)上用一个外部CGI守护进程执行CGI脚本,如果正在多线程模式下使用CGI程序,推荐替换mod_cgi加载,否则注释掉
#LoadModule cgid_module modules/mod_cgid.so
#此模块为mod_dav访问服务器上的文件系统提供支持,如果加载mod_dav,则也应加载此模块,否则注释掉
#LoadModule dav_fs_module modules/mod_dav_fs.so
#如果需要提供大批量虚拟主机的动态配置支持,加载此模块,否则注释掉
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#如果需要提供内容协商支持(从几个有效文档中选择一个最匹配客户端要求的文档),加载此模块(推荐),否则注释掉
LoadModule negotiation_module modules/mod_negotiation.so
#如果需要指定目录索引文件以及为目录提供"尾斜杠"重定向,加载此模块(推荐),否则注释掉
LoadModule dir_module modules/mod_dir.so
#如果需要处理服务器端图像映射,加载此模块,否则注释掉
#LoadModule imagemap_module modules/mod_imagemap.so
#如果需要针对特定的媒体类型或请求方法执行CGI脚本,加载此模块,否则注释掉
#LoadModule actions_module modules/mod_actions.so
#如果希望服务器自动纠正URL中的拼写错误,加载此模块(推荐),否则注释掉
LoadModule speling_module modules/mod_speling.so
#如果允许在URL中通过"/~username"形式从用户自己的主目录中提供页面,加载此模块,否则注释掉
#LoadModule userdir_module modules/mod_userdir.so
#此模块提供从文件系统的不同部分到文档树的映射和URL重定向,推荐加载
LoadModule alias_module modules/mod_alias.so
#如果需要基于一定规则实时重写URL请求,加载此模块(推荐),否则注释掉
LoadModule rewrite_module modules/mod_rewrite.so</pre>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/223.html">Apache2配置文件详解(2)-动态DSO模块说明</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/223.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2.4配置文件详解(1)-常用配置指令</title>
		<link>http://www.ywbk.cc/91.html</link>
		<comments>http://www.ywbk.cc/91.html#comments</comments>
		<pubDate>Tue, 19 Sep 2017 02:54:59 +0000</pubDate>
		<dc:creator><![CDATA[sxdgy]]></dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://05bk.com/?p=91</guid>
		<description><![CDATA[1. ServerRoot 服务器的根目录，用于保存服务器的配置，错误和日志文件。一般无需更改。 Server [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2>1. ServerRoot</h2>
<p>服务器的根目录，用于保存服务器的配置，错误和日志文件。一般无需更改。</p>
<pre class="prettyprint linenums">ServerRoot "/usr/local/apache2"
#注意此指令中的路径最后不要加/</pre>
<h2>2.Mutex</h2>
<p>Mutex 意思是互斥。为所有或指定的互斥锁配置互斥锁机制和锁定文件目录</p>
<pre class="prettyprint linenums">Mutex default:logs</pre>
<h2>3. Listen</h2>
<p>设置监听web服务IP地址和端口。只写端口代表即侦听本机所有的IP地址的指定端口，也就是说不写地址默认的地址为0.0.0.0。也可以指定多行listen。</p>
<pre class="prettyprint linenums">Listen 80
Listen 192.168.2.2:8080
#如果使用IPV6地址，必须用方括号把IPV6地址括起来：
Listen [2001:db8::a00:20ff:fea7:ccea]:80</pre>
<h2>4. LoadModule</h2>
<p>用于指定添加DSO(Dynamic Shared Object动态共享对象)动态模块的名称和路径，比如php支持模块、重定向模块、认证模块。注意静态编译的模块（由`httpd -l&#8217;列出的模块）不需要使用loadmodule加载。</p>
<pre class="prettyprint linenums">LoadModule rewrite_module modules/mod_rewrite.so
#一般使用相对路径，是相对于ServerRoot所指示的路径</pre>
<h2>5. User/Group</h2>
<p>定义在&lt;IfModule unixd_module&gt;段中。与大多数系统服务一样，通常最好创建一个用于运行httpd的用户和组(一般无登陆权限)。最初必须以root身份运行httpd，它会自动切换至该指定用户和组。强烈建议专门为Apache建立独立的用户和组。不建议使用nobody用户，因为可能有其他程序也在使用这个用户。最后要说的是该用户必须对apache站点路径和虚拟站点路径拥有读写权限，否则会报权限的错误。</p>
<pre class="prettyprint linenums">User daemon
Group daemon</pre>
<h2>6. &lt;IfModule&gt;</h2>
<p>用于封装指定模块下生效的指令。也就是说在&lt;IfModule&gt;中配置的指令仅当该模块加载的时才生效，否则将被忽略。</p>
<pre class="prettyprint linenums">&lt;IfModule [!]模块名称|模块标识符&gt; 
#针对此模块的指令
&lt;/IfModule&gt;</pre>
<h2>7. ServerAdmin</h2>
<p>设置在所有返回给客户端的错误信息中包含的管理员邮件地址或网址。推荐使用Email地址，因为许多CGI脚本是这样认为的。</p>
<pre class="prettyprint linenums">ServerAdmin you@example.com</pre>
<h2>8. ServerName</h2>
<p>用于指定Apache默认的服务器名以及端口。当没有指定时，服务器会尝试对IP地址进行反向查询来推断主机名。如果没有指定端口号，服务器会使用接受请求的那个端口。建议显式的指定一个主机名和端口号。如果使用的是基于域名的虚拟主机，在&lt;VirtualHost&gt;段中的ServerName是为了匹配在&#8221;Host:&#8221;请求头中出现的虚拟主机名。</p>
<pre class="prettyprint linenums">ServerName www.example.com:80</pre>
<h2>9. AllowOverride</h2>
<p>设置 .htaccess文件里的配置是否覆盖现有配置。从安全性考虑，根目录一般都配置成不覆盖。AllowOverride仅在不包含正则表达式的&lt;Directory&gt;配置段中有效。</p>
<pre class="prettyprint linenums">AllowOverride All # .htaccess文件里的配置覆盖现有配置
AllowOverride None #.htaccess文件将被完全忽略
AllowOverride AuthConfig #允许使用与认证授权相关的指令
AllowOverride FileInfo #允许使用控制文档类型的指令、控制文档元数据的指令、mod_rewrite中的指令、mod_actions中的Action指令
AllowOverride Indexes #允许使用控制目录索引的指令
AllowOverride Limit #允许使用控制主机访问的指令
AllowOverride Options[=Option,...] #允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的Options选项列表，用来控制允许Options指令使用哪些选项。</pre>
<h2>10. Require</h2>
<p>定义在&lt;Directory&gt;配置段中。用来进行访问控制，即允许或限制IP访问。常用案例：</p>
<pre class="prettyprint linenums">Require all granted #允许所有访问
Require all denied #拒绝所有访问
Require host google.com #只允许来自特定域名主机的访问请求，其他请求将被拒绝
Require method http-method [http-method] ... #允许特定的HTTP方法（GET/POST/HEAD/OPTIONS）
Require ip 192.100 192.168.100 192.168.100.5 #允许特定IP或IP段，其他请求将被拒绝
Require not ip 192.120 192.168.100 #拒绝特定IP或IP段</pre>
<h2>11. &lt;Directory&gt;</h2>
<p>&lt;Directory&gt;&#8230;&lt;/Directory&gt;用于封装一组指令，这些指令仅对该目录及其子目录生效。如果有多个&lt;Directory&gt;配置段符合包含某文档的目录(或其父目录)，那么指令将以短目录优先的规则进行应用，并包含.htaccess文件中的指令。含有正则表达式的目录将在所有普通配置段之后予以考虑。所有的正则表达式将根据它们出现在配置文件中的顺序进行应用。&lt;Directory&gt;指令不可被嵌套使用，也不能出现在&lt;Limit&gt;或&lt;LimitExcept&gt;配置段中。</p>
<pre class="prettyprint linenums">&lt;Directory Directory-path&gt; ... &lt;/Directory&gt;
#Directory-path可以是一个目录的完整路径，或是包含了Unix shell匹配语法的通配符字符串。在通配符字符串中，"?"匹配任何单个的字符，"*"匹配任何字符序列。也可以使用"[]"来确定字符范围。在"~" 字符之后也可以使用正则表达式。</pre>
<h2>12. DocumentRoot</h2>
<p>设置Web文档根目录。 默认情况下，所有请求都来自此目录，但可以使用符号链接和别名指向其他位置。</p>
<pre class="prettyprint linenums">DocumentRoot "/usr/local/apache2/htdocs"
#如果web文档路径不是绝对路径，则被假定为是相对于ServerRoot的路径。
#指定DocumentRoot时不应包括最后的"/"。</pre>
<h2>13. Options</h2>
<p>定义在&lt;Directory&gt;配置段中。设置该目录可以使用服务器哪些特性。如果一个目录了设置多个Options，则最特殊的一个会被完全接受(其它的被忽略)。但是所有前面加有&#8221;+&#8221;号的可选项将强制覆盖当前的可选项设置，而所有前面有&#8221;-&#8221;号的可选项将强制从当前可选项设置中去除。</p>
<pre class="prettyprint linenums">Options [+|-]option [[+|-]option] ...
option可以为下面选项中的一个或多个：
None  不启用任何额外特性。
All  启用除MultiViews之外的所有特性，这是默认设置。
ExecCGI  允许使用mod_cgi执行CGI脚本。
FollowSymLinks 　服务器允许在此目录中使用符号连接，如果此配置位于&lt;Location&gt;配置段中，则会被忽略。
Includes 　允许使用mod_include提供的服务器端包含。
IncludesNOEXEC 　允许服务器端包含，但禁用"#exec cmd"和"#exec cgi"，但仍可以从ScriptAlias目录使用"#include virtual"虚拟CGI脚本。
Indexes 　如果一个映射到目录的URL被请求，而此目录中又没有DirectoryIndex(例如：index.html)，那么服务器会返回由mod_autoindex生成的一个格式化后的目录列表。
MultiViews 　允许使用mod_negotiation提供内容协商的"多重视图"(MultiViews)。
SymLinksIfOwnerMatch 　服务器仅在符号连接与其目的目录或文件的拥有者具有相同的uid时才使用它。 如果此配置出现在&lt;Location&gt;配置段中，则将被忽略。</pre>
<h2>14. DirectoryIndex</h2>
<p>设置当客户端请求一个目录时默认返回的文件。</p>
<pre class="prettyprint linenums">DirectoryIndex Local-url [Local-url] ...
#Local-url(%已解码的)是一个相对于被请求目录的文档的URL(通常是那个目录中的一个文件)。可以指定多个URL，服务器将返回最先找到的那一个，比如：
DirectoryIndex index.html index.php</pre>
<h2>15. &lt;Files&gt;</h2>
<p>&lt;Files&gt;&#8230;&lt;/Files&gt;之间设置基于文件名的访问控制，类似于&lt;Directory&gt;和&lt;Location&gt;指令。&lt;Files&gt;段将根据它们在配置文件中出现的顺序被处理：在&lt;Directory&gt;段和.htaccess文件被处理之后，但在&lt;Location&gt;段之前。&lt;Files&gt;能嵌入到&lt;Directory&gt;段中以限制它们作用的文件系统范围，也可用于.htaccess文件当中，以允许用户在文件层面上控制对它们自己文件的访问。</p>
<pre class="prettyprint linenums">&lt;Files filename&gt; ... &lt;/Files&gt;
#filename参数应当是一个文件名或是一个包含通配符的字符串，其中"?"匹配任何单个字符，"*"匹配任何字符串序列。在"~"字符之后可以使用正则表达式。</pre>
<h2>16. ErrorLog</h2>
<p>指定当服务器遇到错误时记录错误日志的文件路径。如果在&lt;VirtualHost&gt;中没有指定ErrorLog指令，则与虚拟主机相关的错误消息将记录在主配置的错误日志文件里。</p>
<pre class="prettyprint linenums">ErrorLog file-path|syslog[:facility]
#file-path可以是绝对路径也可以相对于ServerRoot的路径；如果file-path以一个管道符号(|)开头，那么会为它指定一个命令来处理错误日志，如 ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/%w/errors_log"。
#如果系统支持，使用"syslog"替代文件名将通过 syslogd(8)来记载日志。默认将使用系统日志机制local7 ，但您可以用"syslog:facility"语法来覆盖这个设置，其中，facility的取值为syslog(1)中记载的任何一个名字。</pre>
<h2>17. LogLevel</h2>
<p>用于调整记录在错误日志中的信息的详细程度。当指定了某个级别时，所有高于它级别的信息也会被同时记录。建议至少使用crit级别。当错误日志是一个单独分开的正式文件的时候，notice级别的消息总是会被记录下来，而不能被屏蔽。但是，当使用syslog来记录时就没有这个问题。</p>
<pre class="prettyprint linenums">LogLevel level
level可以选择下列级别，依照重要性降序排列：
emerg 　紧急(系统无法使用)
alert 　必须立即采取措施
crit 　致命情况
error 　错误情况
warn 　警告情况
notice 　一般重要情况
info 　 普通信息
debug 　调试信息</pre>
<h2>18. LogFormat</h2>
<p>定义在&lt;IfModule log_config_module&gt;段中。设置访问日志的记录格式和别名。</p>
<pre class="prettyprint linenums">LogFormat format|nickname [nickname]
LogFormat指令可以使用两种定义格式中的一种：
#第一种格式：指令只带一个参数，以定义后续的TransferLog指令定义的日志格式。
#第二种格式：将一个直接的format和一个nickname联系起来。这样在后续的LogFormat或CustomLog指令中，就不用一再重复整个冗长的格式串。定义别名的LogFormat指令仅仅用来定义一个nickname ，而不做其它任何事情，也就是说，它只是定义了这个别名，它既没有实际应用这个别名，也不是把它设为默认的格式。因此，它不会影响后续的 TransferLog指令。另外，LogFormat不能用一个别名来定义另一个别名。nickname不能包含百分号(%)。</pre>
<h2>19. CustomLog</h2>
<p>定义在&lt;IfModule log_config_module&gt;段中。设定日志文件的路径和格式。</p>
<pre class="prettyprint linenums">CustomLog file|pipe format|nickname [env=[!]environment-variable]
#第一个参数指定了日志记录的位置，可以使用以下两种方式来设定：
file 　相对于ServerRoot的日志文件名。
pipe 　管道符"|"后面紧跟着一个把日志输出当作标准输入的处理程序路径。
#第二个参数指定了写入日志文件的内容。它既可以是由前面的LogFormat指令定义的nickname ，也可以是自定义日志格式的logformat字符串。
#第三个参数是可选的，它根据服务器上特定的环境变量是否被设置来决定是否对某一特定的请求进行日志记录。如果这个特定的环境变量被设置(或者在"env=!name"的情况下未被设置)，那么这个请求将被记录。可以使用mod_setenvif和/或mod_rewrite模块来为每个请求设置环境变量。</pre>
<h2>20.Redirect</h2>
<p>定义在&lt;IfModule alias_module&gt;段中。用于告诉客户端以前存在于服务器命名空间中的文档，但不再存在。 客户将在其新位置对该文档发出新请求。</p>
<pre class="prettyprint linenums">Redirect permanent /foo http://www.example.com/bar</pre>
<h2>21. Alias</h2>
<p>定义在&lt;IfModule alias_module&gt;段中。用于将Web路径映射到文件系统路径，并用于访问不在DocumentRoot下的内容。</p>
<pre class="prettyprint linenums">Alias URL-path file-path|directory-path
#Alias指令使文档可以被存储在DocumentRoot以外的本地文件系统中。以(%已解码的)url-path路径开头的URL可以被映射到以directory-path开头的本地文件。
#如果对在DocumentRoot之外的某个目录建立了一个Alias ，则可能需要通过&lt;Directory&gt;段明确的对目标目录设定访问权限。</pre>
<h2>22.ScriptAlias</h2>
<p>定义在&lt;IfModule alias_module&gt;段中。映射一个Web路径到文件系统并视之为CGI脚本目录。也就是说控制哪些目录包含服务器脚本。ScriptAliases行为与Alias基本相同，只是目标目录中的文档被视为应用程序，并在请求时由服务器运行，而不是作为发送到客户端的文档。 关于尾随“/”的相同规则适用于与Alias相关的ScriptAlias指令。</p>
<pre class="prettyprint linenums">ScriptAlias URL-path file-path|directory-path
#以URL-path开头的(%已解码的)的URL会被映射到由第二个参数指定的具有完整路径名的本地文件系统中的脚本。</pre>
<h2>23.ScriptSock</h2>
<p>定义在&lt;IfModule cgid_module&gt;段中。在线程服务器上，指定用于与mod_cgid的CGI守护程序通信的UNIX套接字的路径。这个套接字将会用启动Apache服务器的父进程用户权限(通常是root)打开。为了维护与CGI脚本通讯的安全性，不允许其他用户拥有写入套接字所在目录的权限是很重要的。</p>
<pre class="prettyprint linenums">Scriptsock cgisock</pre>
<h2>24.RequestHeader</h2>
<p>定义在&lt;IfModule headers_module&gt;段中。避免将HTTP_PROXY环境传递给CGI上的这个或任何具有延迟“httpoxy”缺陷的代理后端服务器。如果你在 Apache HTTP 服务器中使用 mod_cgi来运行 Go 或 Python 写的脚本，那么它们会受到影响(这里 HTTP_PROXY 环境变量是“真实的”)。而 mod_php 由于用于 PHP 脚本，也存在该缺陷。如果你使用 mod_headers 模块，你可以通过下述配置在进一步处理请求前就unset 掉 Proxy 请求头部：</p>
<pre class="prettyprint linenums">RequestHeader unset Proxy early</pre>
<h2>25.TypesConfig</h2>
<p>定义在&lt;IfModule mime_module&gt;段中。设置文件扩展名到MIME类型映射列表的文件路径。</p>
<pre class="prettyprint linenums">TypesConfig conf/mime.types</pre>
<h2>26.AddType</h2>
<p>定义在&lt;IfModule mime_module&gt;段中。添加或覆盖指定文件类型对应的MIME类型。</p>
<pre class="prettyprint linenums">AddType application/x-gzip .tgz</pre>
<h2>27. DefaultType</h2>
<p>指定在服务器无法确定内容类型时发送的默认MIME类型。</p>
<pre class="prettyprint linenums">DefaultType text/plain</pre>
<h2>28.AddEncoding</h2>
<p>定义在&lt;IfModule mime_module&gt;段中。让浏览器动态解压缩信息。 注意并非所有浏览器都支持此功能</p>
<pre class="prettyprint linenums">AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz</pre>
<h2>29.AddHandler</h2>
<p>定义在&lt;IfModule mime_module&gt;段中。将文件扩展名映射到指定的处理程序。例如，要激活文件扩展名为.cgi的CGI脚本，可以使用：</p>
<pre class="prettyprint linenums">AddHandler cgi-script .cgi</pre>
<h2>30.AddOutputFilter</h2>
<p>定义在&lt;IfModule mime_module&gt;段中。将文件扩展名映射到将处理来自服务器的响应的过滤器。</p>
<pre class="prettyprint linenums">AddOutputFilter INCLUDES .shtml</pre>
<h2>31.MIMEMagicFile</h2>
<p>使用指定的魔术文件，根据文件内容确定MIME类型。</p>
<pre class="prettyprint linenums">MIMEMagicFile conf/magic</pre>
<h2>32. ErrorDocument</h2>
<p>设置当服务器遇到错误的时返回给客户的响应。有三种形式：</p>
<pre class="prettyprint linenums">ErrorDocument 500“servers 500 error”#纯文本提示
ErrorDocument 404 /missing.html #本地重定向
ErrorDocument 402 http://www.example.com/subscription_info.html #外部重定向</pre>
<h2>33.MaxRanges</h2>
<p>限制服务器返回到客户端的HTTP范围的数量。 如果请求的范围超出允许范围，则返回完整资源。</p>
<pre class="prettyprint linenums">MaxRanges default|unlimited|none|200
#default默认数量(200)、unlimited不限制、none数量范围被忽略、200自定义</pre>
<h2>34. EnableMMAP</h2>
<p>当处理一个需要访问文件中的数据的请求时使用内存映射(memory-mapping)来读取文件。如果操作系统支持，Apache将默认使用内存映射。这种内存映射有时会带来性能的提高，但在一些多处理器的系统上，内存映射会减低一些httpd的性能，就需要禁用该功能；在挂载了NFS的文件夹上，若已经将一个文件进行了内存映射，则删除或截断这个文件会造成httpd因为分段故障而崩溃，可以单独在&lt;directory&gt;段中指定禁用内存映射。</p>
<pre class="prettyprint linenums">EnableMMAP On|Off</pre>
<h2>35. EnableSendfile</h2>
<p>是否可以使用操作系统内核的sendfile支持来将文件发送到客户端。默认情况下如果操作系统支持，当处理一个请求并不需要访问文件内部的数据时(比如发送一个静态的文件内容)，Apache将使用sendfile将文件内容直接发送到客户端而并不读取文件。这个sendfile机制避免了分开的读和写操作以及缓冲区分配，但是在一些平台或者一些文件系统上，最好禁止这个特性来避免一些问题。</p>
<pre class="prettyprint linenums">EnableSendfile Off</pre>
<h2>36. include</h2>
<p>在服务器配置文件中包含其它配置文件。Shell风格(fnmatch())的通配符可以用于按照字母顺序一次包含多个文件。另外，如果Include指向了一个目录而不是一个文件，Apache将读入该目录及其子目录下的所有文件，并依照字母顺序将这些文件作为配置文件进行解析。但是并不推荐这么做，因为偶尔会有临时文件在这个目录中生成，从而导致httpd启动失败。</p>
<pre class="prettyprint linenums">Include file-path|directory-path
#文件的路径可以是一个完整的绝对路径(以一个斜杠开头)，或是相对于ServerRoot目录的相对路径。</pre>
<p>转载请注明：<a href="http://www.ywbk.cc">运维博客</a> &raquo; <a href="http://www.ywbk.cc/91.html">Apache2.4配置文件详解(1)-常用配置指令</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ywbk.cc/91.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
