Назад | Перейти на главную страницу

Перенаправить (Псевдоним? Перенаправить? Маршрут?) Поддомен в каталог в конфигурации Nginx

Я хотел бы псевдоним m.example.com так что запросы перенаправляются / имеют псевдоним example.com/m/ но без перенаправления пользователя на /m/ каталог.

Например, пользователь обращается к m.example.com, m.example.com/1.htm, m.example.com/2.htm но nginx перенаправляет запросы на example.com/m/, example.com/m/1.htm и example.com/m/2.htm.

Я пробовал использовать rewrite директива, но это, похоже, выполняет перенаправление на стороне клиента на example.com/m/.

Я также посмотрел на alias директива, но это только, кажется, изменяет местоположение, где файлы будут обслуживаться в файловой системе сервера.

Я уверен, что это должно было быть сделано раньше, но я не могу с этим справиться. Я использую неправильный флаг с alias директива (я пробовал все 4: last, break, redirect, permanent). Я вообще пропустил правильную директиву для использования?

Фрагмент конфигурации с использованием перезаписи:

server_name       example.com m.example.com;

...

if ($host ~* m\.(.*))
{
    rewrite ^(.*)$ http://example.com/m$1 break;
}

Еще одна попытка:

server
{
    listen            80;
    server_name       m.example.com;

    location /
    {
        rewrite ^ http://example.com/m$request_uri permanent;
    }
}

Заранее спасибо.

В Nginx это невозможно. Вы можете использовать поддомен m, но вам нужно будет перейти на свой бэкэнд в этом блоке сервера. Это связано с тем, что Nginx не может переписать URL-адрес без использования фактического перенаправления HTTP, даже если вы скажете ему, что он проигнорирует это и вызовет перенаправление HTTP.

Если вы используете бэкэнд fastcgi, это не имеет особого значения, и даже если вы перейдете к Apache через прокси, вы все равно сможете настроить его так, чтобы это не волновало.