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;
  }
1
задан 26 December 2016 в 02:21
2 ответа

Наконец-то он заработал следующим образом:

location ~* "/target" {
  if ( $host ~* "www\.(.*)" ) {
    return 302 https://nocache.$1/destination;
  }

  return 302 https://nocache.$host/destination;
}

302-е предназначались для тестирования и будут заменены на постоянные редиректы.

Спасибо всем, кто ответил.

0
ответ дан 4 December 2019 в 05:28

Вот блок расположения, который вы можете использовать для перенаправления

server {
    server_name www.domain.tld;
    location /target {
        rewrite /target(.*)$ /destination$1 last;
        return 301 https://nocache.domain.tld$request_uri;   
    }
}
  • Имя_сервера ограничивает перенаправление на www.domain. tld domain
  • The location matches against all URIs that start with /target
  • the rewrite directive converts /target to /destination and keeps anything that appears after
  • The return pushes the redirect to the other domain
  • you also can do this with proxy pass if you don't want the user to be redirected
0
ответ дан 4 December 2019 в 05:28

Теги

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