Ошибка 403 при попытке запустить CherryPy за Apache - PullRequest
3 голосов
/ 28 сентября 2010

Я пытаюсь запустить CherryPy за Apache, используя mod_rewrite, как описано в документации CherryPy ( BehindApache , ModRewrite ), и он не работает.

Редактировать: Ранее мое описание этой проблемы было несколько неточным. Кажется, я забыл перезапустить Apache во время некоторых моих попыток. Я значительно изменил вопрос.

Когда я запускаю свою программу (очень простая программа «hello world», похожая на первый учебный файл, поставляемый с CherryPy), она, кажется, работает нормально. Если я запускаю curl "http://127.0.0.1:8080" с моего сервера, я вижу вывод и вижу какую-то запись об этом в журнале CherryPy.

Однако, если я пытаюсь получить доступ к сайту из моего браузера, я получаю сообщение об ошибке 403 Forbidden, говорящее «У вас нет прав доступа к / на этом сервере». Я не вижу записи об этом в журнале CherryPy. Я попытался поместить RewriteRule (RewriteRule ^(.*) <a href="http://127.0.0.1:8080" rel="nofollow">http://127.0.0.1:8080</a>$1 [proxy]) в соответствующий раздел VirtualHost моего файла httpd.conf, как с косой чертой, так и без нее, и оба раза я получал одну и ту же ошибку. В моем журнале ошибок Apache я вижу такие строки:

[Пн 27 сентября 15:54:11 2010] [ошибка] [клиент 123.45.67.89] попытка сделать удаленный запрос от mod_rewrite без включенного прокси: proxy: http://127.0.0.1:8080/

Я попытался вместо этого поместить RewriteRule в файл .htaccess моего сайта, и я получил ошибки 404 Not Found с такими строками в журнале ошибок:

[Пн 27 сентября 13:31:54 2010] [ошибка] [клиент 123.45.67.89] Попытка обслуживания каталога: прокси: http://127.0.0.1:8080/

Я все еще не видел записей в журнале CherryPy.

Я решил посмотреть, что произойдет, если я попытаюсь получить доступ к сайту без запуска CherryPy, и я получил то же самое. Как будто Apache безуспешно пытается связаться с программой CherryPy, если я помещаю строку в httpd.conf, и совершенно не знаю об этом, когда я помещаю строку в .htaccess.

Кто-нибудь здесь знает, почему это происходит, и что с этим делать? Я перепробовал все, что мог придумать. Мой сайт работает на частном сервере DreamHost с Debian 4.3.2-1.1, Apache 2.2.15, Python 2.6.5 и CherryPy 3.1.2.

Редактировать 2: lazy1, я попробовал ваше предложение, и оно не помогло. Я получаю те же 403 ошибки.

Ответы [ 2 ]

4 голосов
/ 30 сентября 2010

Я запускаю CherryPy позади Apache очень похожим образом. Apache обслуживает сам статический контент, и любые URL, начинающиеся с 'cp', обслуживаются CherryPy. CherryPy прослушивает порт 8500. Вот что у меня работает в httpd.conf:

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

Это внутри определения VirtualHost (хорошо, строка RewriteMap находится за ее пределами, но вы получите картинку)

Очевидно, вы должны убедиться, что mod_proxy загружается. Проверьте документацию RewriteRule .

В моем конфиге CherryPy у меня есть:

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

Удачи!

0 голосов
/ 28 сентября 2010

Вы возможно хотите попробовать связать cherrypy с 0.0.0.0 (все интерфейсы)

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