Недавно я просто помог коллеге решить небольшую проблему с настройкой статических ресурсов 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, а то вы объясните, почему конфигурация правильная, а в почтальоне она не действует, ха-ха, и ваще сомневаться в жизни.