浏览模式: 普通 | 列表
分类: apache | 1 | 2 | >
p.s. 因为老服务器用apache加https,然后反向代理iis6上的http,因为http和https都允许访问,所以这个时候就无法判断当前用户访问是http还是https了。在apache的反向代理配置前增加header能实现这个判断。

1、配置中 mod_headers 前去掉注释
2、代理配置前增加
         RequestHeader unset HTTPS
         RequestHeader append HTTPS "on"


程序代码中可以使用 $_SERVER["HTTP_HTTPS"] 来获取



参考:https://www.php.cn/manual/view/17877.html
运行环境:
apache2.4 + mod_fcgid + php5.4 nts

故障现象:
修改httpd.conf之后重启apache,出现apache假死,访问网站无响应。

分析日志:
出现大量 mod_fcgid: can't apply process slot for php-cgi.exe 错误,看来是php-cgi.exe进程数满不能增加新的进程导致。
看上去似乎可以增加配置文件中 FcgidMaxProcesses 参数来增加进程,但是此服务器内存不大,数十万PV应该还不至于。一个php-cgi进程占15M内存,200个进程需要3G内存。实际上目前的进程数量是够用的,问题是重启apache的时候,php-cgi进程没有自动结束,应该是受制于它自己的生命周期。虽然进程失效却不能马上结束,所以导致新进程不能产生,旧进程又失效了。

解决办法:
...

阅读全文…
p.s. 涉及伪静态参数中有网址或者中文的,需要进行2次urlencode,因为apache伪静态前会自动urldecode一次

配置Apache的伪静态,涉及到中文正则不能匹配,
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
也试了,也不能匹配。
尝试匹配所有字母数字加上% ([a-zA-Z0-9_%]+)
也没有成功,查到Apache执行url会自动进行一次urldecode,传的值会还原成中文的,也不能匹配。
后来想到,把值进行两次 urlencode ,取的时候再进行两次 urldecode 用([a-zA-Z0-9_%]+)
就可以匹配了。
p.s. win2003下fastcgi方式安装apache后也遇到些问题,做个记录。一般情况下可以依据apache和php的错误日志来做一些调整,看看修改的结果。

1、连接状态中 close_wait 太多的问题,apache服务器无响应
解决办法:
a、windows网卡防火墙的设置
windows防火墙中把80,443,apache放入例外,另外防火墙高级中选中http和https。

b、修改apache配置文件httpd.conf,加入下面语句
EnableMMAP off
EnableSendfile off
AcceptFilter http none
AcceptFilter https none
Win32DisableAcceptEx


2、并发连接数太多,导致服务器无响应
...

阅读全文…

apache Alias使用问题

[ 2020-06-03 13:11:26 | 作者: admin ]
今天在配置apache的过程中,使用了Alias,但是由于配置错误导致403 forbidden错误,不能正常访问。

首先理解一下Alias,Alias就是别名的意思,假如我的项目目录在/home/web/test 下,可以通过配置的域名http://blog.xg98.com/xxx 可以正常访问test目录下的所有内容,但是在项目开发过程中,由于一些原因导致一些文件想存放于/home/web/statics下,但是也想通过

http://blog.xg98.com/statics/xxx ,访问位于/home/web/statics 下的文件,就可以使用apache提供的Alias了。

其次,使用Alias非常方便的就可以实现上面的需求了,通过在刚在配置的test.com域名的vhosts中进行添加


apache2.2[code][/code]...

阅读全文…

apache配置上传目录禁止运行php的方法

[ 2020-06-03 13:05:48 | 作者: admin ]
p.s. 这个是apache2.2的语法,apache2.4
         AllowOverride None
         Options None
         Require all granted

安全防护网站上传功能里引发安全问题很多很多,你做好安全防护了吗?

导读: 禁止上传目录运行php等可执行文件可以从一定程度上增加网站的安全性, 禁止上传目录运行php的方法可以用.htaccess文件, 也可以直接在apache服务器上修改配置文件.
第一种禁止上传目录运行php的方法

如果你用的虚拟空间可以用.htaccess文件来限制上传目录运行php。
.htaccess方法A
新建一个.htaccess文件,拷贝下面的内容, 上传到要禁止运行php的文件夹内

         <Files ~ ".php">
         Order allow,deny
...

阅读全文…
p.s. 虽然win2003非常非常悠久,不过资源消耗低,系统稳定,运行小项目绝对没问题,特别是企业站。这里选择apache的原因是可以作为服务运行,比较方便,也支持虚拟目录Alias。并发过高还是老实点转到 centos+nginx。

首先是版本选择,根据https://www.apachelounge.com/download/win32/ 的说法,最后一个支持win2003的是vc10编译版本,可选apache2.2和apache2.4,下方有下载链接。
Build with Windows® Platform SDK 7.1 and Visual Studio C++ 2010 SP1 aka VC10. VC10 has improvements, fixes and optimizations over VC9 in areas like Performance,
...

阅读全文…

Apache服务器错误问题Internal Server Error

[ 2020-06-03 10:42:39 | 作者: admin ]
遇到错误,查日志文件。
三个可以查的地方:
1、apache的错误日志
2、相关模块,如php的错误日志
3、操作系统日志


500 Internal Server Error 一般是模块问题,查php错误日志
1 | 2 | >