2011年04月26日

销售打电话过来帮一个用户问了个怪问题:

能不能让Apache根据登录用户名自动转向到用户目录

例如:当访问:http://192.168.1.11/index.html时
提示登录,使用“user1”用户登录
登录后,自动重定向到http://192.168.1.12/user1
使用“user2”用户登录
自动重定向到http://192.168.1.12/user2

给了个参考配置过去:

Apache登录身份认证:

<Location “/”>
Options FollowSymLinks MultiViews
Order allow,deny
Allow from all
AuthName MemberPage
AuthType Basic
AuthUserFile /xxx/users.htpasswd
require valid-user
ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
ErrorDocument 401 /401.html
</Location>

获取认证用户名,转向到指定的url
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{LA-U:REMOTE_USER} ^(\w+)$
rewriterule ^/index.html http://192.168.1.12/%1
</IfModule>

最后好奇他们到底想干什么,打电话过去问了半天,闹明白了,需求描述出入太大了,根本就没Apache什么事。

另外给了个修改系统设计功能的建议方案过去了。

Apache这事算白忙活。

2010年10月11日

两台Linux服务器,前台是192.168.3.100,后台是192.168.3.102

用Proxypass做反向代理

某天频繁出错

查看error_log,当出现错误:
(113)No route to host: proxy: HTTP: attempt to connect to 192.168.3.102:8081 (192.168.3.102) failed
之后,代理便有一段时间不能访问后台服务器。

但是等一段时间会自动恢复正常,不定期的反复发作。

后来发现两台服务器都跑着iptables
临时解决措施是把后台服务器的iptables停用,然后就没出这个问题了。

在Nginx论坛中找了个帖子,有修改iptables的解决方案,不知道对Apache+iptables有无作用,没时间测试。有空再说

http://forum.nginx.org/read.php?2,37426,67008

2010年09月27日

下午接到一客户电话,说他们的系统不稳定了,重启Apache+Tomcat后,总是过几分钟又不能访问。

瞄了一眼error.log,又是“(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次”

再看配置文件,发现已经按我给的建议配置过了。

有点邪门,调试来调试去,总是重启后没几分钟就出这个错误。

然后看到系统自动更新时不时的提醒一下,还曾经有过虚拟内存不足的提示。

去他的吧,重启Windows拉倒。

于是世界清静了,到现在也还一切正常。

就这样吧,明天再说。

2010年09月03日

最近又帮人看Apache的毛病

都是一个毛病,Apache反向代理的Java页面动不动就出错:
The server is temporarily unable to service your request due to maintenance

但在内网中直接访问后台的Tomcat却又正常。

开发人员照例查程序查不出原因,就拖我下水。

听了一堆blablabla…,大致了解清楚:

部署都架构相似,Win2003+Tomcat+Apache,用Oracle和M$SQL的都有。

以前对付过同样的案例,所以不再听书了,直接看Apache的error.log,找到我想看的东西:

在error.log中,每隔一段时间便会出现:
(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 : proxy: HTTP: attempt to connect to 127.0.0.1:9000 (localhost) failed
[error] ap_proxy_connect_backend disabling worker for (localhost)
[error] proxy: HTTP: disabled connection for (localhost)

然后告诉他们把httpd.conf中的
ProxyPass /xxx http://localhost:9000/xxx
改成:
ProxyPass /xxx http://172.17.1.10:9000/xxx 不要使用LoopBack。

监控了半小时,没再出现这个错误信息。

这两天没人再拿这事烦我,应该是搞定了。

2009年09月01日

在Windows下配置Apache2.2的VirtualHost,遇到一点小问题

偷懒从以前保存的旧版本httpd.conf中抄来的配置,但居然不起作用,总是跳回到默认站点,在网上搜索,基本上和我以前的配置差不多,没什么头绪。

后来发现,按如下方式配置就可以:

ServerName www:80
NameVirtualHost *:80
<VirtualHost *:80>
#不要写servername
  ServerAdmin webmaster@xxx.com
  DocumentRoot e:/pub
  # 注释掉  ServerName www.xxx.com
  DirectoryIndex index.html index.htm index.jsp
</VirtualHost>

<VirtualHost *:80>
#不要写成<VirtualHost test.xxx.com>
    ServerName  test.xxx.com
    DocumentRoot "e:/pub/test"
 </VirtualHost>

2006年10月29日

想看一下apache2.2和2.0有什么不同,于是升级到2.2

马上看出不同来了,太明显了,php5 的module不能用了。启动httpd的时候显示:
httpd: Syntax error on line 116 of C:/Apache Software Foundation/Apache2.2/conf/
httpd.conf: Cannot load C:/php5/php5apache2.dll into server: \xd5\xd2\xb2\xbb\xb
5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3

因为原先是可用的,怀疑可能是php5apache2.dll和apache2.2不兼容。于是在http://snaps.php.net/ 上面下载了个php5.2的zip包。把其中的php5apache2_2.dll解压到c:\php5目录中。

同时把httpd.conf修改了一下,把LoadModule php5_module c:/php5/php5apache2.dll 修改为:LoadModule php5_module c:/php5/php5apache2_2.dll

然后重启动apache就可以了。 测试用的php页面也能运行。

接着试了一下cgi的方式,结果还是不行,httpd启动倒没报错,但是php页面直接显示源码了。不管它了。

2004年09月16日

测试一个内部开发站点的反向代理,开始就用XP装个Apache 2.0来做。结果出了些稀奇古怪的问题。

懒得写rewrite,省点事,直接用proxyPass和ProxyPassReverse

首先是登录进去之后,有个框架页面出不来,要刷新几次才行。

几个主要的页面也是要刷新几次才肯出来,而且总说javascript错。不通过代理网站直接浏览都没问题的。

又改用规则匹配,修改来修改去,总是有问题,似乎页面下载总是不全。打开Cache也不行。

折腾一上午,吃过中饭后,干脆重启,用Linux的Apache来做。居然就可以了。

然后又找了台装有win2k svr的电脑,加了块网卡。装上Apache来测,居然还是可以

郁闷。。。都是一样的httpd.conf

看来是XP的问题了。我用的是2600 E文版,不知道中文版的会不会有问题。还是Apache只适合在Server上面跑。

2004年03月12日

用Apache做反向代理测试没问题了,不过又想到另外一个问题,如果是多个内部站点,都要求使用“/“,如何处理?总不能把所有文件都copy到一个目录下吧?


找了一些资料,不过同时要忙着帮另外项目的S胖子采购硬件,没来得及试验。


基于反向代理的Web缓存加速——可缓存的CMS系统设计


http://www.phpe.net/articles/366.shtml


 


Apache 2.0手册中文版翻译项目


Apache模块 mod_proxy


Caching Tutorial for Web Authors and Webmasters


如何规划一个高容量的Apache服务器


 


负载均衡技术全攻略


Apache性能优化技巧


Apache服务器的设置与优化