gpt4 book ai didi

django - lighttpd mod_rewrite 与 Django 和 FastCGI 的 apache mod_rewrite

转载 作者:行者123 更新时间:2023-12-02 00:10:05 24 4
gpt4 key购买 nike

我正在从 Apache 中的 Django FastCgi 设置迁移到 lighttpd 中的设置。

在 Apache 上,我使用 Django 文档中描述的 fcgi 配置。核心部分是将我所有的非静态 URL 重写为/mysite.fcgi/$1:

RewriteRule ^/(.*)$ /mysite.fcgi/$1 [QSA,L]

然后将/mysite.fcgi 的所有请求转发给 FastCGI:

<IfModule mod_fastcgi.c>
FastCGIExternalServer /opt/www/mysite.fcgi -host 127.0.0.1:8000
</IfModule>

该设置适用于 Django。例如,如果我访问 http://www.mydomain.com/help/ 并在模板中打印 {{ request.get_full_path }},结果是 /help/ 。生活很美好,我很快乐。然而,我遇到了一些问题,迫使我转向支持比 Apache 所能提供的更多同时连接数的 Web 服务器。

快进到 lighttpd。一切都配置好了。我正在使用 mod_rewrite 重写我的 URL:

url.rewrite-once = ( "^(/media/.)$"=> "$1", "^/favicon.ico$"=> "/med/img/favicon/favicon.ico", "^(/.)$"=> "/mysite.fcgi$1", )

并且具有 FastCGI 处理/mysite.fcgi:

   fastcgi.server = (
"/mysite.fcgi" => (
"main" => (
"host" => "127.0.0.1",
"port" => 8000,
"check-local" => "disable",
)
),
)

一切正常,我的 Django 网站运行良好。但是当我访问 http://www.mydomain.com/help/ 并在模板中打印 {{ request.get_full_path }} 时,结果是 /mysite.fcgi/help/ 。这会导致一些问题。

虽然这通常不会导致问题,因为 Django 站点运行良好,但当我使用 SSL 时,它确实会导致问题。具体来说,我使用 http://www.djangosnippets.org/snippets/240/ 中的“Stephen Zabel - sjzabel@gmail.com”中的 sslmiddleware。 。该软件依赖于request.get_full_path,它在lighttpd 下返回的值与在Apache 下返回的值不同。 request.path 也是如此。

谁能提出解决这个问题的方法吗?理想情况下,我希望 lighttpd mod_rewrite 具有与 Apache 下的 mod_rewrite 相同的行为。如果不可能,我想要一个 lighttpd FastCGI Django 设置,它与我正在使用的 sslmiddleware 包兼容。或者,我可以更改 sslmiddleware 包,使其与 lighttpd 中的 mod_rewrite 重写 URL 的方式兼容。

这个答案将是一份很棒的 30 岁生日礼物!

最佳答案

您是否尝试将 settings.py 中的 FORCE_SCRIPT_NAME 定义为“”并重新启动fastcgi服务器?

FORCE_SCRIPT_NAME=""

关于django - lighttpd mod_rewrite 与 Django 和 FastCGI 的 apache mod_rewrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1107458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com