最新消息:

关于Apache做反向代理

web 林夕 2974浏览 0评论

http://yahoon.blog.51cto.com/13184/162922/

Python zope Plone

http://groups.google.com/group/czug-zope/msg/50863ffaaaf32415 发件人:”Genjuro”

日期:Thu, 01 Jun 2006 05:26:22 -0700

当地时间:2006年6月1日(星期四) 上午8时26分

主题:提问:关于Apache做反向代理的疑问

很高兴加入czug的Zope技术讨论区,谢谢各位。
我自己在搭建Apache2.0.55和Plone2.1.2时,发现反向代理怎么都设不好。
从Apache输出的所有uri都是相对内网的地址,导致外网访问时所有链接,图片,css等都失去作用了。Apache侦听所有的80端口,Zope的HTTP开在8280。

<VirtualHost *:80>
    ServerAdmin webm...@mydomain.com
    ServerName www.mydomain.com
    RewriteEngine On
    RewriteRule ^/(.*)$ http://localhost:8280/$1 [P,L]
#    ProxyPass / http://localhost:8280/
#    ProxyPassReverse / http://localhost:8280/

不用Rewrite改ProxyPass时也一样。输出页面的源码都像这样:

<title>
        Welcome to Plone
        &mdash;
        Portal
</title>
<base href="http://localhost:8280/front-page" />
<meta name="generator" content="Plone - http://plone.org" />

也许犯什么低级错误了,希望大家指点。
zhw
06-6-2
http://plone.org/documentation/tutorial/plone-apache/virtualhost
看看这个对解决你的问题有没有点帮助。
Ni ZhengGang
06-6-2
这个问题不在Apache上,你只要在你的Zope根目录上创建一个SiteRoot就可以了,
在SiteRoot里面设置Base为http: //www.mydomain.com 根据你自己的域名去改。
最好不要弄错,否则就用FTP连上去把这个SiteRoot删掉,重新建。

还有,用Proxy比用Rewrite似乎效率高一点。
Genjuro
06-6-2
非常感谢楼上兄弟的帮助。我是用Plone2.1.2的Windows
Installer安装的。看来还是要深入学一下Zope才行。
第一次装完之后,域名前面漏写了http,结果创建siteroot出错,zope的管理界面都不能进。FTP登上去之后,删除那个0kb的siteroot也没有用。只能重装,还好是用小白鼠做的试验。第二次写成http://myhost.com就可以了。
同时也参看了下面的文档,但是他的方法好像很混乱。删除accessrule和siteroot之后,连Plone的门都找不到了。
http://plone.org/documentation/tutorial/multiple-plone-instances-windows/apache-proxies
另外,如果因为误操作而破坏ZODB,有没有办法可以自行修复呢?否则太恐怖了。
Ni ZhengGang
06-6-2
Re: [czug-zope] Re: 提问:关于Apache做反向代理的疑问
除非文件系统损坏,用非暴力手段想破坏ZODB都很难。做好备份比较重要。备份
var.fs就好了。

潘俊勇
06-6-2
> 另外,如果因为误操作而破坏ZODB,有没有办法可以自行修复呢?否则太恐怖了。

这么些年,ZODB现在的确是很坚固了。
zope的bin目录中应该有一组修复工具的,是ZODB脆弱年代的救星。
Genjuro
06-6-3
在root下面添加SiteRoot后,Plone的代理终于正常。但是在ZMI和FTP里面,根都变成了Plone,没办法编辑原来的SiteRoot了。这样也不爽啊。
Ni ZhengGang
06-6-3
Re: [czug-zope] Re: 提问:关于Apache做反向代理的疑问
喔,这样哦。那么你这样,比如说你的Plone目录是 /plone。那么你的rewrite
rule就写成

RewriteRule ^/(.*)$ http://localhost:8280/plone$1 [P,L]

然后你在/plone下面添加siteroot就好了。

……

> 在root下面添加SiteRoot后,Plone的代理终于正常。但是在ZMI和FTP里面,根都变成了Plone,没办法编辑原来的SiteRoot了。这样也不爽啊。
>
> >
>

Genjuro
06-6-8
圆满解决:
Apache用ProxyPass / http://localhost:8280/
Zope同时设置Plone目录下的Siteroot对象,见前文
设置后,ZMI可以正常访问Zope的根,但不能访问Plone文件夹。因为ZMI的端口被Siteroot滤掉。别慌,手工在ZMI的Plone目录和manage_main的URI中间再加一级/SUPPRESS_SITEROOT/,就可以通过ZMI访问Plone了。
或者增加一个环境变量_SUPPRESS_SITEROOT,就可以禁止所有的SiteRoot了。

傻瓜解决方案。。。免去登FTP了

转载请注明:一秒钟的梦 » 关于Apache做反向代理

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址