fcgi, ssl и django, перенаправить HTTP на HTTPS - PullRequest
2 голосов
/ 30 ноября 2011

У меня есть настройка сайта django с работающими lighttpd и ssl, но я не могу получить перенаправление на работу с http на https. Моя установка очень похожа на: https://docs.djangoproject.com/en/dev/howto/deployment/fastcgi/#lighttpd-setup, и я использую lighttpd / 1.4.26 на Ubuntu

В основном моя установка выглядит примерно так:

$HTTP["host"] =~ "myhost.com" {
server.document-root = "/home/myvenv/blah" 
fastcgi.server = ( 
    "/blah.fcgi" => (
    (   
        "host" => "127.0.0.1",
        "port" => 16666,
        "check-local" => "disable",
        "max-procs" => 4,
        "min-procs" => 4,
    )   
)   
)
   url.rewrite-once = ( 
    "^(/favicon.ico.*)$" => "/$1",
    "^(/admin_media.*)$" => "/$1",
    "^(/media.*)$" => "/$1",
    "^(/.*)$" => "/blah.fcgi$1",
)

expire.url = ( 
    "/favicon.ico" => "access 1 seconds",
    "/admin_media" => "access 1 seconds",
"/media" => "access 1 seconds",
)

}

Я хочу добавить это для перенаправления http на https:

$SERVER["socket"] == ":80" {
  $HTTP["host"] =~ "(.*)" {
    url.redirect = ( "^/(.*)" => "https://%1/$1" )
  }
}

Проблема в том, что когда я включаю перенаправление, мой URL переписывается так:

https://myhost.com/blah.fcgi/my/path/to/blah

вставка части blah.fcgi, когда я действительно хочу:

https://myhost.com/my/path/to/blah

Я не уверен, почему перенаправление включает в себя переписывание и / или как предотвратить его и действительно выполнить правильное перенаправление?

Большое спасибо за продвижение.

1 Ответ

3 голосов
/ 01 декабря 2011

Я использую lighttpd таким же образом, и вот как я делаю аналогичное перенаправление:

url.redirect = (
  "^(?:/[a-z]+\.fcgi)?(.*)$" => "https://%1$1"
)

При этом удаляется переписанное имя сценария из совпадения с левой стороны, поэтому оно не отображается в перенаправлении.

...