Nginx: перенаправить https://www.domain.tld/target на https://nocache.domain.tld/destination
У меня есть конфигурация сервера Cloudflare/Nginx(v1.8.0)/Apache с большим количеством кэширования.
Цель состоит в том, чтобы кэшировать основной домен, но разрешить доступ к сайту через поддомен, на котором обойдено все кэширование.
Итак, я ищу общий способ перенаправления " https://www.domain.tld/target" на " https://nocache.domain.tld/destination"
Простого совпадения местоположения с request_uri достаточно для варианта домена без www, но если запрос приходит через поддомен www, как это делают многие сайты, он перенаправляет на nocache.www.domain.tld, который не существовать.
Я пробовал все виды разных способов, чтобы удалить "www". подстрока, но, кажется, ничего не работает.
РЕДАКТИРОВАТЬ
Вот моя неработающая конфигурация сервера Nginx:
server {
listen 80 default_server;
server_name localhost;
set $PROXY_DOMAIN_OR_IP $host;
if ( $request ~* ".*(www\.)(.*)\/target" ) {
set $host_without_www $2;
return 302 $scheme://nocache.${host_without_www}\/destination;
}
2 ответа
Наконец-то все заработало следующим образом:
location ~* "/target" {
if ( $host ~* "www\.(.*)" ) {
return 302 https://nocache.$1/destination;
}
return 302 https://nocache.$host/destination;
}
302 были для тестирования и будут изменены на постоянные перенаправления.
Спасибо всем, кто откликнулся.
Вот блок местоположения, который вы можете использовать для перенаправления
server {
server_name www.domain.tld;
location /target {
rewrite /target(.*)$ /destination$1 last;
return 301 https://nocache.domain.tld$request_uri;
}
}
- Имя_сервера ограничивает перенаправление
www.domain.tld
домен - Расположение совпадает со всеми URI, которые начинаются с /target
- директива rewrite преобразует /target в /destination и сохраняет все, что появляется после
- Возврат толкает перенаправление на другой домен
- Вы также можете сделать это с пропуском прокси, если вы не хотите, чтобы пользователь был перенаправлен