artemerschow
@artemerschow

Почему может вылетать Bad Request при наличии пробела в имени?

Имеется такой кусок конфигурации.
location ~* ^/.+\.(webp)$ {
		    expires max;
		    etag on;
			try_files $uri $uri/ /try_image.cgi?source=$uri;
    	}

Если есть webp файл, то отдаём его, если нет - отдаём $uri bash-скрипту, который подготовит и отдаст отсутствующий файл. Проблема в том, что если попадается файл с пробелом в имени, то nginx отдаёт Bad Request.
То есть 'httр://domen.xyz/image_name.jpg.webp' при отсутствии webp файла, обрабатывается нормально, а вот 'httр://domen.xyz/image name.jpg.webp' ('httр://domen.xyz/image%20name.jpg.webp' ) отдаёт Bad Request
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@dodo512
location ~* ^/.+\.(webp)$ {
    expires max;
    etag on;
    try_files $uri $uri/ @handler;
}

location @handler {
    rewrite ^(.*)$ /try_image.cgi?source=$1;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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