我在CentOS 5.7上安装了Plone 3.3.5并将Zope放在了Apache之后,为了让URL“看到”我的Plone网站,我使用了虚拟主机和重写规则的概念。但是,虽然网页确实正确显示,但结果的网址并不漂亮。
NameVirtualHost 164.67.141.42:80
<VirtualHost 164.67.141.42:80>
ServerName www2.oid.ucla.edu
ServerAlias www2.oid.ucla.edu
ServerAdmin web@oid.ucla.edu
ServerSignature On
CustomLog /var/log/httpd/www2-access.log combined
ErrorLog /var/log/httpd/www2-error.log
LogLevel warn
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/(.*) http://www2.oid.ucla.edu:8080/VirtualHostBase/http/www2.oid.ucla.edu:80/Plone/VirtualHostRoot/$1 [L]
</IfModule>
<IfModule mod_proxy.c>
ProxyVia On
# prevent the webserver from being used as proxy
<LocationMatch "^[^/]">
Deny from all
</LocationMatch>
</IfModule>
</VirtualHost>
结果网址=“http://www2.oid.ucla.edu:8080/VirtualHostBase/http/www2.oid.ucla.edu:80/Plone/VirtualHostRoot/”
网址应为=“http://www2.oid.ucla.edu/”
如果我将“P”添加到RewriteRule ^ /(。*)http://www2.oid.ucla.edu:8080/VirtualHostBase/http/www2.oid.ucla.edu:80/Plone/VirtualHostRoot/$1 [L,P]
它在网页上出现“服务暂时不可用”错误。
错误日志说: [错误](13)权限被拒绝:代理:HTTP:尝试连接到164.67.141.42:8080(*)失败
导致这种情况的原因是什么?提前谢谢!
答案 0 :(得分:1)
确保mod_proxy处于活动状态且已启用,并且您的apache已设置为允许代理。 '[L,P]'中的'P'表示'代理',而mod_rewrite本身不会这样做
答案 1 :(得分:1)
起初我以为你应该看看你的zope配置设置,认为它可能绑定到localhost但你没有代理标志的例子会触发重定向到域名,我收集的实际上返回了一个真正的Plone响应。所以这可能不是它。
SELinux设置可能存在问题。要测试它,请尝试以root身份...
$ echo 0&gt; / selinux的/执行
这会暂时禁用SELinux。如果代理现在有效,您就找到了问题。在这种情况下,以下内容可能对您有帮助......
$ / usr / sbin / setsebool -P httpd_can_network_connect 1
但是我建议你不要再使用这个修补程序,直到你读完SELinux了。在不了解您正在做什么的情况下,在服务器的安全配置上扭动旋钮可能并不明智。
可能与您的问题没有直接关系,但这里有一些其他建议:
1)您不需要ServerAlias系列。列出的域已列为ServerName。
2)其他人已经指出你需要'P'标志。在这种情况下,“L”标志本身只会生成重定向,这不是您想要的。带有'P'标志,暗示'L',所以只需[P]即可。
3)Martijn提到的betabug.ch网站没问题,但请注意它也错误地添加了'L'标志并假设某些请求中可能不存在初始'/'(在VirtualHost上下文中,路径将始终以'/'开头 - 它只在目录上下文中,您必须担心这在Plone设置中从未有过)。这些都不会破坏RewriteRule - 它们只会不必要地混乱配置。
4)您不需要LocationMatch位来防止代理滥用。您正在设置反向代理,而不是转发代理。这是需要特别照顾的前瞻性代理。如果您不确定您是否拥有转发代理 - 或者您是偏执狂 - 只需使用“ProxyRequests off”明确关闭转发代理行为。您通常不需要担心这一点,因为ProxyRequests默认是关闭的。
答案 2 :(得分:0)
$ setenforce 0
另一方面,阅读selinux的一些文档。有一种方法可以让它吞下这个apache配置。
SELinux,你的朋友,为了舒尔,但小心对待HIM:)