nginx:正则表达式不适用于 URL 重写

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;
    }
 }

欢迎任何帮助,再次感谢。

答案1

指令rewriteregex 将匹配规范化的请求URIserver_name指令将匹配域名。该last标志将强制进行内部重定向,而这并不是您想要的。

所以你做的方式是错误的。

改用这个:

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

相关内容