Задать вопрос
@VITYA-XY1

Как составить rewrite субдомена с регуляркой на nginx?

server_name ~^(?<name>.+)\.test\.server$ test.server;
          rewrite ^(.*)$ http://test.server/$name permanent;

          root         /usr/share/nginx/html;
          location / {
          }

       }


Нужен именно rewrite, redirect не подходит
Т.е.:
Было: subdomain.test.server/ping
Стало: test.server/subdomain/ping

UPD:

server{ 
listen  80;
server_name domain.test.server test.server;
root  /usr/share/nginx/html; 

location / {
              if ($host ~* ^(?<sub>.+)*\.test\.server$ )
                 { rewrite ^/(.*)$ http://test.server/$sub/$1; }
           }
   }

}

Так работает но с редиректом:

curl -I http://domain.test.server/
  HTTP/1.1 302 Moved Temporarily
  Server: nginx/1.12.2
  Date: Fri, 20 Sep 2019 10:17:52 GMT
  Content-Type: text/html
  Content-Length: 161
  Connection: keep-alive
  Location: http://test.server/domain/


Как убрать редирект?
  • Вопрос задан
  • 75 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
@VITYA-XY1 Автор вопроса
server{ 
    listen  80;
    server_name domain.test.server test.server; 

    root  /var/www/korin;

    location / {
                        proxy_set_header Host test.server;
                        proxy_pass http://127.0.0.1:80;

  #                  if ($host ~* ^(?<lev3>.+)*\.(?<lev2>.+)*\.(?<lev1>.+)*$ ) {
  #                     rewrite ^/(.*)$ /$lev3/$lev2/$lev1/$1 break;              
                     if ($host ~* ^(?<sub>.+)*\.test\.server$ ) {
                        rewrite ^/(.*)$ /$sub/$1 break;      
                     }
                  
               }
       }

server{
    listen 127.0.0.1:80;
    server_name test.server;

    root  /var/www/korin;

    location / {
               }
       }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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