403尝试在Apach后面运行CherryPy时出错

2024-05-08 16:42:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Apache后面使用mod_rewrite运行CherryPy,正如CherryPy文档(BehindApacheModRewrite)中描述的那样,但是它不起作用。在

编辑:之前,我对这个问题的描述有些不准确。在我的一些尝试中,我似乎忘记了重新启动Apache。我对这个问题作了重大修改。在

当我运行我的程序(一个非常简单的“hello world”程序,类似于CherryPy附带的第一个教程文件),它似乎运行得很好。如果我从我的服务器上运行curl "http://127.0.0.1:8080",我可以看到输出,并且在CherryPy日志中看到它的某种记录。在

但是,如果我试图从我的浏览器访问该站点,我会收到一个403禁止的错误,说“您没有访问/此服务器的权限。”。我在CherryPy日志里没看到任何记录。我试着把重写规则(RewriteRule ^(.*) http://127.0.0.1:8080$1 [proxy])放在我的httpd.conf文件,有斜杠和没有斜杠,两次我都得到相同的错误。在我的Apache错误日志中,我看到如下行:

[Mon Sep 27 15:54:11 2010] [error] [client 123.45.67.89] attempt to make remote request from mod_rewrite without proxy enabled: proxy:http://127.0.0.1:8080/

我试着把RewriteRule放到我站点的.htaccess文件中,结果发现404个未找到的错误,错误日志中有这样的行:

[Mon Sep 27 13:31:54 2010] [error] [client 123.45.67.89] Attempt to serve directory: proxy:http://127.0.0.1:8080/

我还是没有在CherryPy日志中看到任何条目。在

我决定看看如果我不运行CherryPy就访问这个站点会发生什么,我得到了同样的结果。如果我插入代码,就好像Apache试图与CherryPy程序通信,但没有成功httpd.conf当我把线放进去的时候完全没有意识到。在

这里有人知道为什么会发生这种事吗?有人知道该怎么办吗?我想尽一切办法都试过了。我的站点运行在一个DreamHost私有服务器上,Debian4.3.2-1.1、Apache2.2.15、Python2.6.5和Cherrypy3.1.2。在

编辑2:lazy1,我试过你的建议,但没用。我得到同样的403个错误。在


Tags: 文件程序服务器modhttp编辑站点apache
2条回答

您可能希望尝试将cherrypy绑定到0.0.0.0(所有接口)

    cherrypy.config.update({"server.socket_host" : "0.0.0.0"})

我在Apache后面运行CherryPy的方式非常相似。Apache本身提供静态内容,任何以“cp”开头的url都由CherryPy提供服务。CherryPy在8500端口监听。以下是对我有用的httpd.conf公司名称:

RewriteMap escape int:escape
  [...]
RewriteRule ^/cp\/(.*) http://localhost:8500/cp/${escape:$1} [L,P]

这是在VirtualHost定义内(好吧,RewriteMap行在它外面,但是您可以看到图片)

显然你必须确保mod_proxy正在加载。同时检查RewriteRule documentation。在

在我的CherryPy配置中,我有:

^{pr2}$

祝你好运!在

相关问题 更多 >

    热门问题