nginx переписать тайну - дублирование имени хоста и потеря https - PullRequest
0 голосов
/ 24 ноября 2010

Я заменяю lighttpd на nginx на моем сервере разработки.Я работал с PHP и SSL, но я озадачен тем, что должно быть простым переписыванием.Мне нужно переписать URL-адреса с

http[s]://dev.foo.com/signup/123456

на

http[s]://dev.foo.com/signup/index.php?attcode=123456

Правило, которое я использую:

rewrite ^/signup/([0-9]+)$  /signup/index.php?attycode=$1 last;

Я пробовал многочисленные варианты этого, переехалэто вокруг, поместите это в блоке местоположения.Что происходит, если URL перезаписывается на:

http://dev.foo.com/dev.foo.com/signup/123456

Имя хоста вставлено, и кажется, что он всегда теряет https и переходит на http.

Мой раздел сервера nginx.com находится ниже.Я прочитал и перечитал документы nginx (как они есть) и искал список рассылки nginx, но ничего из того, что я пробовал, не решило эту проблему.

Ubuntu 8.0.4 LTS в случае, если это важно.

Спасибо.


server {
    listen      80;
    listen      443 default ssl;
    server_name dev.foo.com   dev.bar.com   localhost;
    root        /var/www/foo;
    index       index.php index.html;
    # ssl cert stuff omitted
    charset utf-8;
    access_log  /var/log/www/dev.access.log  main;

    location ~ /\. {
        deny  all;
    }   

    location ~* ^.+\.(inc|tpl|sql|ini|bak|sh|cgi)$ {
        deny all;
    }   

    location ~* ^/(scripts|tmp|sql)/ {
        deny all;
    }   

    rewrite ^/robots.txt$         /robots_nocrawl.txt break;
    rewrite ^/signup/([0-9]+)$    /signup/index.php?attycode=$1 last;

    location / { 
        try_files $uri $uri/ /error_404.php;
    }   

    location ~ \.php$ {
        fastcgi_pass localhost:51115;
        fastcgi_index index.php;
        fastcgi_intercept_errors on; 
        include fastcgi_params;
        fastcgi_param SERVER_NAME       $http_host;
        fastcgi_param SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    }

    error_page  404              /error_404.php;
}

1 Ответ

0 голосов
/ 24 ноября 2010

Не размещайте HTTP и HTTPS в одном блоке сервера.Разделите их на два почти идентичных серверных блока, один для HTTP и один для HTTPS.В противном случае вы будете путать все виды внутренностей Nginx.

...