Назад | Перейти на главную страницу

nginx: регулярное выражение не работает при перезаписи 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;
    }
 }

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

В rewrite директива regex будет соответствовать нормализованному запросу URI в то время server_name директива будет соответствовать доменному имени. В last flag вызовет внутреннее перенаправление, а это не то, что вам нужно.

Значит, вы делаете это неправильно.

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

server {
    listen 80;
    server_name "~^(?<subdomain>[^.]*)\.?cervo02.com$";
    return 301 https://cervo02.com/$subdomain;
}