编程语言
首页 > 编程语言> > python-尝试在Apache后面运行CherryPy时出现403错误

python-尝试在Apache后面运行CherryPy时出现403错误

作者:互联网

我正在尝试使用Cherry_Py文档(BehindApache,ModRewrite)中所述的mod_rewrite在Apache后面运行CherryPy,但它不起作用.

编辑:以前,我对这个问题的描述有些不准确.好像我在某些尝试中忘了重启Apache.我已对问题作了重大修改.

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

但是,如果尝试从浏览器访问该站点,则会收到403 Forbidden错误,提示“您无权访问此服务器上的/”.我在CherryPy日志中看不到任何记录.我尝试将RewriteRule(RewriteRule ^(.*)http://127.0.0.1:8080 $1 [proxy])放在我的httpd.conf文件的相应VirtualHost部分中,无论是否带斜杠,而且两次都出现相同的错误.在我的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 Not Found错误,并在错误日志中包含以下行:

[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的情况下尝试访问该站点会发生什么,我也得到了同样的结果.如果将行放在httpd.conf中,并且似乎完全不知道,则将Apache尝试与CherryPy程序通信失败.

这里有谁知道为什么会这样,怎么办?我已经尽力想了一切.我的站点在带有Debian 4.3.2-1.1,Apache 2.2.15,Python 2.6.5和CherryPy 3.1.2的DreamHost专用服务器上运行.

编辑2:lazy1,我尝试了您的建议,但没有帮助.我收到相同的403错误.

解决方法:

我以非常相似的方式在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配置中,我有:

server.socket_host = "127.0.0.1"
server.socket_port = 8500

祝好运!

标签:apache,cherrypy,python
来源: https://codeday.me/bug/20191105/1997700.html