<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ApacheHttp on 菜鸟程序员</title><link>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/</link><description>Recent content in ApacheHttp on 菜鸟程序员</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/index.xml" rel="self" type="application/rss+xml"/><item><title>apache日志记录真实ip-</title><link>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/apache%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E7%9C%9F%E5%AE%9Eip/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/apache%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E7%9C%9F%E5%AE%9Eip/</guid><description>&lt;p>默认情况下log日志格式为：
LogFormat &amp;ldquo;%h %l %u %t &amp;quot;%r&amp;quot; %&amp;gt;s %b &amp;quot;%{Referer}i&amp;quot; &amp;quot;%{User-Agent}i&amp;quot;&amp;rdquo; combined
其中%h 是记录访问者的IP，如果在web的前端有一层代理，那么这个%h其实就是代理机器的IP，这不是我们想要的。在这种情况下，
%{X-FORWARDED-FOR}i 字段会记录客户端真实的IP。所以log日志改为：
LogFormat &amp;ldquo;%h %{X-FORWARDED-FOR}i %l %u %t &amp;quot;%r&amp;quot; %&amp;gt;s %b &amp;quot;%{Referer}i&amp;quot; &amp;quot;%{User-Agent}i&amp;quot;&amp;rdquo; combined&lt;/p></description></item><item><title>apache限制某个目录下的php文件没有执行权限</title><link>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/apache%E9%99%90%E5%88%B6%E6%9F%90%E4%B8%AA%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84php%E6%96%87%E4%BB%B6%E6%B2%A1%E6%9C%89%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/apache%E9%99%90%E5%88%B6%E6%9F%90%E4%B8%AA%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84php%E6%96%87%E4%BB%B6%E6%B2%A1%E6%9C%89%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90/</guid><description>&lt;p>为了安全期间，有时我们需要限制网站下的某些目录对于php脚本不能执行。
有两种方法可以参考：&lt;/p>
&lt;ol>
&lt;li>使用.htaccess 文件限制&lt;/li>
&lt;/ol>
&lt;p>在要限制php执行的目录下，创建.htaccess文件，加入内容&lt;/p>
&lt;p>php_flag engine off&lt;/p>
&lt;ol start="2">
&lt;li>使用apache的配置文件httpd.conf&lt;/li>
&lt;/ol>
&lt;p>在相关的虚拟主机段，加入&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;Directory&lt;/span> &lt;span style="color:#a40000">/www/htdocs/path&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> php_admin_flag engine off 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;filesmatch&lt;/span> &lt;span style="color:#a40000">&amp;#34;(.*)php&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Order deny,allow
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Deny from all
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Allow from 127.0.0.1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;/filesmatch&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/Directory&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>apache在虚拟主机中实现用户验证</title><link>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/apache%E5%9C%A8%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E4%B8%AD%E5%AE%9E%E7%8E%B0%E7%94%A8%E6%88%B7%E9%AA%8C%E8%AF%81/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/apache%E5%9C%A8%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E4%B8%AD%E5%AE%9E%E7%8E%B0%E7%94%A8%E6%88%B7%E9%AA%8C%E8%AF%81/</guid><description>&lt;p>##两种方法&lt;/p>
&lt;h3 id="方法一">方法一&lt;a class="td-heading-self-link" href="#%e6%96%b9%e6%b3%95%e4%b8%80" aria-label="Heading self-link">&lt;/a>&lt;/h3>
&lt;p>虚拟主机配置文件中，需要加入
&amp;lt;Directory /data/web/test&amp;gt;
AllowOverride AuthConfig
&lt;/Directory>&lt;/p>
&lt;p>然后在虚拟主机的主目录，即DocumentRoot 目录下
vi /data/web/test/.htaccess&lt;/p>
&lt;p>加入
AuthName &amp;ldquo;frank share web&amp;rdquo;
AuthType Basic 这种要重启 下面的那种不需要重启
AuthUserFile /data/web/test/.htpasswd
require valid-user&lt;/p>
&lt;p>保存后，然后
创建apache的验证用户&lt;/p>
&lt;p>htpasswd -c /data/web/test/.htpasswd test
#第一次创建用户要用到-c 参数 第2次添加用户，就不用-c参数&lt;/p>
&lt;p>如果你想修改密码，可以如下&lt;/p>
&lt;p>htpasswd -m .htpasswd test2&lt;/p>
&lt;p>重启apache，即可。&lt;/p>
&lt;h3 id="方法二">方法二&lt;a class="td-heading-self-link" href="#%e6%96%b9%e6%b3%95%e4%ba%8c" aria-label="Heading self-link">&lt;/a>&lt;/h3>
&lt;p>到此，你已经配置完成。下面介绍另一种方式：
##################################
vi http.conf
在相应的虚拟主机配置文件段，加入
&amp;lt;Directory *&amp;gt;
AllowOverride AuthConfig
AuthName &amp;ldquo;自定义的&amp;rdquo;
AuthType Basic
AuthUserFile /data/.htpasswd // 这个目录你可以随便写一个，没有限制
require valid-user
&lt;/Directory>&lt;/p>
&lt;p>保存后，然后
创建apache的验证用户&lt;/p>
&lt;h3 id="htpasswd-默认创建的密码只有前8位有效">htpasswd 默认创建的密码只有前8位有效&lt;a class="td-heading-self-link" href="#htpasswd-%e9%bb%98%e8%ae%a4%e5%88%9b%e5%bb%ba%e7%9a%84%e5%af%86%e7%a0%81%e5%8f%aa%e6%9c%89%e5%89%8d8%e4%bd%8d%e6%9c%89%e6%95%88" aria-label="Heading self-link">&lt;/a>&lt;/h3>
&lt;p>按照如下命令创建密码
htpasswd -c .htpasswd user1
假如，密码为123456789
那么访问时，不管是输入 12345678 还是 123456789 甚至是 123456781234 都能顺利通过验证。这是为什么呢？
htpasswd默认情况，是使用系统库中的crypt()函数来对密码明文进行单向加密的。在网上找到该函数的说明：
crypt()将使用Data Encryption Standard(DES)演算法将参数key所指的字符串加以编码，key字符串长度仅取前8个字符，超过此长度的字符没有意义。参数salt为两个字 符组成的字符串，由a-z,A-Z,0-9,&amp;quot;.&amp;quot;,和&amp;quot;/&amp;ldquo;所组成，用来决定使用4096种不同内建表格的哪一个。函数执行成功后会返回指向编码过的字符串指针，参数key所指的字符串不会有所更动。编码过的字符串长度为13个字符，前两个字符为参数salt代表的字符串。&lt;/p></description></item><item><title>httpd2.4不能查看状态</title><link>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/httpd2.4%E4%B8%8D%E8%83%BD%E6%9F%A5%E7%9C%8B%E7%8A%B6%E6%80%81/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/httpd2.4%E4%B8%8D%E8%83%BD%E6%9F%A5%E7%9C%8B%E7%8A%B6%E6%80%81/</guid><description>&lt;p>httpd无法apachectl status 直接查看状态，虽然没有大的影响。&lt;/p>
&lt;p>但是让人十分不悦。解决方法如下。&lt;/p>
&lt;p>1，先加查模块是否存在&lt;/p>
&lt;pre tabindex="0">&lt;code>[root@jingwangweilai ~]# apachectl -M |grep status
status_module (shared)
&lt;/code>&lt;/pre>&lt;p>2，存在就忽略这一步，不存在去/etc/httpd/httpd.conf把这个模块注释掉去掉&lt;/p>
&lt;pre tabindex="0">&lt;code>LoadModule status_module modules/mod_status.so
&lt;/code>&lt;/pre>&lt;p>3，添加如下字段&lt;/p>
&lt;pre tabindex="0">&lt;code>&amp;lt;Location /server-status&amp;gt;
SetHandler server-status
Require host localhost
&amp;lt;/Location&amp;gt;
&lt;/code>&lt;/pre></description></item><item><title>安装ApacheHttp</title><link>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/01%E5%AE%89%E8%A3%85apachehttp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/01%E5%AE%89%E8%A3%85apachehttp/</guid><description>&lt;h2 id="系统包安装">系统包安装&lt;a class="td-heading-self-link" href="#%e7%b3%bb%e7%bb%9f%e5%8c%85%e5%ae%89%e8%a3%85" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>sudo apt install apache2 | sudo yum install httpd | sudo dnf install httpd&lt;/p>
&lt;h2 id="源码安装">源码安装&lt;a class="td-heading-self-link" href="#%e6%ba%90%e7%a0%81%e5%ae%89%e8%a3%85" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;pre tabindex="0">&lt;code># 这份文档应该已经过时了， 这是n年前整理的不保证有效性
源码编译安装httpd

&amp;gt; http://httpd.apache.org/download.cgi 下载httpd源码包

&amp;gt; http://apr.apache.org/ 下载apr and apr-uril

&amp;gt; http://www.pcre.org/ 下载pcre

&amp;gt; yum install gcc* -y

1.安装apr
```shell
 [root@localhost apr-1.4.5]# ./configure --prefix=/usr/local/apr
 [root@localhost apr-1.4.5]# make
 [root@localhost apr-1.4.5]# make install
&lt;/code>&lt;/pre>&lt;p>2.安装apr-util&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>root@localhost apr-util-1.3.12&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>&lt;span style="color:#8f5902;font-style:italic"># ./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr/&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>root@localhost apr-util-1.3.12&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>&lt;span style="color:#8f5902;font-style:italic"># make&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>root@localhost apr-util-1.3.12&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>&lt;span style="color:#8f5902;font-style:italic"># make install&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>3.安装pcre&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>root@localhost pcre-8.31&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>&lt;span style="color:#8f5902;font-style:italic"># ./configure --prefix=/usr/local/pcre&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>root@localhost pcre-8.31&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>&lt;span style="color:#8f5902;font-style:italic"># make&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>root@localhost pcre-8.31&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>&lt;span style="color:#8f5902;font-style:italic"># make install&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>4.安装apache&lt;/p></description></item><item><title>禁止ip访问</title><link>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/%E7%A6%81%E6%AD%A2ip%E8%AE%BF%E9%97%AE/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/%E7%A6%81%E6%AD%A2ip%E8%AE%BF%E9%97%AE/</guid><description>&lt;pre tabindex="0">&lt;code>NameVirtualHost 1.1.1.1
## 这里假设要禁止的ip为1.1.1.1
&amp;lt;VirtualHost 1.1.1.1&amp;gt;
 ServerName 1.1.1.1
 &amp;lt;Location /&amp;gt;
 Order Allow,Deny
 Deny from all
 &amp;lt;/Location&amp;gt;
&amp;lt;/VirtualHost&amp;gt;
2.4 Require all denied
## 实现拒绝直接通过1.1.1.1这个IP的任何访问请求，这时如果你用1.1.1.1访问，会提示拒绝访问
 
&amp;lt;VirtualHost 1.1.1.1&amp;gt;
 DocumentRoot &amp;#34;/var/www/cainiaoer&amp;#34;
 ServerName www.cainiaoer.com
&amp;lt;/VirtualHost&amp;gt;
## 允许通过www.cainiaoer.com这个域名访问，主目录指向/var/www/cainiaoer（这里假设网站的根目录是/var/www/cainiaoer）
&lt;/code>&lt;/pre></description></item><item><title>设置不允许访问文件</title><link>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/%E8%AE%BE%E7%BD%AE%E4%B8%8D%E5%85%81%E8%AE%B8%E8%AE%BF%E9%97%AE%E6%96%87%E4%BB%B6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/%E8%AE%BE%E7%BD%AE%E4%B8%8D%E5%85%81%E8%AE%B8%E8%AE%BF%E9%97%AE%E6%96%87%E4%BB%B6/</guid><description>&lt;p>在配置文件&amp;quot;/usr/local/apache2/conf/httpd.conf&amp;quot; 中添加内容：&lt;/p>
&lt;pre tabindex="0">&lt;code>&amp;lt;Files &amp;#34;*.txt&amp;#34;&amp;gt;
 Require all denied
&amp;lt;/Files&amp;gt;
&lt;/code>&lt;/pre></description></item><item><title>自定义header</title><link>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/%E8%87%AA%E5%AE%9A%E4%B9%89header/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.azhw.com.cn/%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E5%92%8C%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%9C%8D%E5%8A%A1/apachehttp/%E8%87%AA%E5%AE%9A%E4%B9%89header/</guid><description>&lt;ol>
&lt;li>在设置自定义header前，需要先检测一下你的httpd是否加载了mod_headers&lt;/li>
&lt;/ol>
&lt;p>/usr/local/apache2/bin/apachectl -l&lt;/p>
&lt;p>如果，显示有mode_headers.c 则是加载了这个模块，否则就需要重新编译一下了。&lt;/p>
&lt;p>另外，如果你使用的是rpm安装的话，那肯定是已经加载了mod_headers这个模块的。&lt;/p>
&lt;ol start="2">
&lt;li>在httpd.conf 中加入&lt;/li>
&lt;/ol>
&lt;pre tabindex="0">&lt;code>&amp;lt;IFModule mod_headers.c&amp;gt;
 Header add MyHeader &amp;#34;Hello&amp;#34;
&amp;lt;/IFModule&amp;gt;
&lt;/code>&lt;/pre>&lt;p>保存后，重启apache就可以了&lt;/p>
&lt;p>双引号中的内容为自定义内容。当然这里的&amp;quot;MyHeader&amp;quot;也是可以自定义的。&lt;/p>
&lt;ol start="3">
&lt;li>测试&lt;/li>
&lt;/ol>
&lt;p>curl -I http://localhost&lt;/p>
&lt;p>看是否显示有 MyHeader &amp;ldquo;Hello&amp;rdquo;&lt;/p></description></item></channel></rss>