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

Расположение nginx перезаписывает псевдоним

У меня есть псевдоним «/ temp», который работает нормально, но когда я добавляю еще один блок местоположения, псевдоним возвращает 404.

Рабочий конфиг: http://mysite.com/temp/blank.gif -> OK

server {
    # ...
    location /temp {
        alias  /var/www/temp;
    }
    # ...
}

Конфигурация ошибки: http://mysite.com/temp/blank.gif -> 404

server {
    # ...
    location /temp {
        alias  /var/www/temp;
    }
    location ~ \.(?:jpg|png|gif)$ {
        expires  30d;
    }
    # ...
}

Вот моя полная конфигурация: http://pastebin.com/yExq0nMY

Как я могу это решить?

Используйте вложенный location для этого.

nginx соответствует только одному location блок на server уровень, поэтому вы должны вложить их в этом случае. Подробности см. В официальной документации: Как nginx обрабатывает запрос.

server {
    # ...
    location /temp {
        alias  /var/www/temp;
        location ~ /temp/\.(?:jpg|png|gif)$ {
            expires  30d;
        }
    }
    location ~ \.(?:jpg|png|gif)$ {
        expires  30d;
    }
    # ...
}

У вас есть корневой каталог? Пожалуйста, опубликуйте больше конфигурации.

Еще несколько важных статей: https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/