nginx: regex, не работающие над URL, переписывают

Я имею http://sample.cervo02.com. я пытаюсь добраться https://cervo02.com/sample.

Я попробовал несколько перенаправлений, ни один из них не работает. rewrite ^([^.]*)$ https://cervo02.com/$1 last; вернуть https://cervo02.com//

другой rewrite ^([^.]*).cervo02.com$ https://cervo02.com/$1 last; возвратите 404, и URL не переписывается.

полный сервер размещает определение

upstream backend {
    server 192.167.1.79:8080;
}

proxy_cache_path  /tmp/cache levels=1:2 keys_zone=my-test-cache:8m max_size=5000m inactive=300m;



server {
     listen   80;

    server_name sample.CERVO02.com;


    rewrite ^([^.]*)$ https://cervo02.com/$1 last;

}

server {

    listen 443 ssl spdy;
    server_name  CERVO02.com;
    ssl on;
    ssl_certificate      /etc/nginx/ssl/server.crt;
    ssl_certificate_key  /etc/nginx/ssl/server.key;



    location / {

       proxy_pass http://backend;# backend c'est pas une variable 

        proxy_cache my-test-cache;
        proxy_cache_valid  200 302  60m;
        proxy_cache_valid  404      1m;
        proxy_cache_use_stale   error timeout invalid_header updating;
        proxy_redirect default;
    }
 }

любая справка приветствуется еще раз спасибо.

0
задан 17 March 2015 в 21:03
1 ответ

Регекс директивы rewrite будет соответствовать нормализованному запросу URI, в то время как директива server_name будет соответствовать имени домена. Флаг последний заставит внутренний редирект, а это не то, что вы хотите.

Поэтому вы делаете это неправильно.

Используйте вместо этого :

server {
    listen 80;
    server_name "~^(?<subdomain>[^.]*)\.?cervo02.com$";
    return 301 https://cervo02.com/$subdomain;
}
1
ответ дан 4 December 2019 в 17:00

Теги

Похожие вопросы