我有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
指令rewrite
regex 将匹配规范化的请求URI而server_name
指令将匹配域名。该last
标志将强制进行内部重定向,而这并不是您想要的。
所以你做的方式是错误的。
改用这个:
server {
listen 80;
server_name "~^(?<subdomain>[^.]*)\.?cervo02.com$";
return 301 https://cervo02.com/$subdomain;
}