lighttpd + FCGI 设置

lighttpd + FCGI 设置

我已决定将项目服务器后端从 Apache+WSGI 更改为 lighttpd+FCGI。现在,一切正常,除了 DOCUMENT_URI 的一个烦人问题,它接收我的 django 服务器(以 ./manage.py runfcgi … 启动)。它始终包含 /index.fcgi 前缀!

让我们看一下我的 lighttpd 配置:

fastcgi.server = (
    ".fcgi" => (
        "localhost" => (
            "host" => "127.0.0.1",
            "port" => 3033,
            "check-local" => "disable",
        )
    ),
)

url.rewrite-once = (
    "^(/.*)$" => "/index.fcgi$1",
)

根据重写规则,http://www.mysite.com/procuts/请求将被 mod_rewrite 更改为 ....mysite.com/index.fcgi/procucts/,因此 DOCUMENT_URI 将为:index.fcgi/procucts/。

但是,当我在 Apache 上使用 WSGI 时,我的 DOCUMENT_URI 不包含处理程序脚本名称。

我的 Apache WSGI 设置:

WSGIScriptAlias / /path/to/my/site/index.wsgi

请给我一个建议!

答案1

看一下http://docs.djangoproject.com/en/dev/howto/deployment/fastcgi/

我按照这个方法使我的 Lighttpd + FastCGI 设置工作起来(我在下面附上了我的配置的净化版本以供参考)。您还需要在 settings.py 中设置 FORCE_SCRIPT_NAME=""。

server.modules   += ( "mod_fastcgi" )
server.modules   += ( "mod_alias" )

$HTTP["host"] =~ "(www\.)?domain\.com" {
    fastcgi.server = (
        "/django.fcgi" => (
            "main" => (
                "host" => "127.0.0.1",
                "port" => 3000,
                "check-local" => "disable",
            )
        ),
    )

    alias.url = (
        "/admin-media" => "/path/to/django/contrib/admin/media/",
    )

    url.rewrite-once = (
        "^(/admin-media.*)$" => "$1",
        "^(/.*)$" => "/django.fcgi$1",
    )
}

相关内容