Nginx Learning Series (3) ------------- Разница между псевдонимом и корневыми инструкциями

задняя часть
Nginx Learning Series (3) ------------- Разница между псевдонимом и корневыми инструкциями

Недавно я просто помог коллеге решить небольшую проблему с настройкой статических ресурсов nginx. Хоть он и очень маленький, но я уже давно об этом думаю, то ли nginx меня стравил, то ли я слишком хорош. Ха-ха, я подумал, что лучше записать это небольшое знание, и я смогу повысить эффективность, когда столкнусь с той же проблемой позже.

Во-первых, обратите внимание на мелкие потребности

Требование очень простое, грубо говоря: когда URL-адрес начинается с/resПри наличии префикса он указывает, что запрос является запросом статического ресурса, и перенаправляет его на путь статического ресурса для получения статического ресурса.

Например:

Когда путь доступа:http://127.0.0.1:8080/res/风景.jpg, в это время nginx должен возвращать красивую пейзажную картинку.

Во-вторых, конфигурация nginx

Это простое требование.Конфигурация с использованием nginx выглядит следующим образом:

location /res/ {
    root   f:/res/; 
}

при сопоставлении/res/префикс при доступеf:/res/Статические файлы ресурсов в каталоге. Картинка "landscape.jpg" хранится вf:/res/Под содержанием.

После запуска nginx обнаруживается, что следующий запрос показывает 404

http://localhost/res/风景.jpg

Просмотрев лог, я обнаружил, что nginx на самом деле ищетf:/res/res/风景.jpgкартинки по этому пути, но из-заf:/res/res/Без этой картинки, конечно, будет сообщено об ошибке 404!

Теперь мы изменим приведенную выше конфигурацию nginx на:

location /res/ {
    alias   f:/res/; 
}

После запуска nginx обнаруживается, что следующий запрос нормально отображает картинки.

http://localhost/res/风景.jpg

Просмотрев лог, я обнаружил, что nginx на самом деле ищетf:/res/风景.jpgкартинки по этому пути, но из-заf:/res/Конечно, если у вас есть эта картинка, вы не будете сообщать о 404!

3. Заключение

aliasиrootРазница между командами следующая:

  • 1,rootне будуlocationНастроенный путь удален то есть запросhttp://localhost/res/xxx, не будет игнорироватьlocalhostконфигурации, он будет добавлен вrootПосле настроенного пути он становитсяf:/res/res/xxx

  • 2,aliasбудетlocationНастроенный путь удален

то есть запросhttp://localhost/res/xxx, будет игнорироватьlocalhostконфигурация, не будет добавлена ​​вaliasПосле настроенного пути он становитсяf:/res/xxx,locationиз/res/игнорируется.

Наконец, не выполняйте запросы на китайские имена на почтальоне, такие какhttp://localhost/res/风景.jpg, так как почтальон не поддерживает китайский язык, то всегда будет отображаться 404, а то вы объясните, почему конфигурация правильная, а в почтальоне она не действует, ха-ха, и ваще сомневаться в жизни.