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

Я работаю над окнами и использую Winginx, изменяя файл nginx.conf в папке conf. Я изменил блок сервера, прослушивающий порт, следующим образом:

server{
 listen 127.0.0.1:80;
 log_not_found off;
 charset utf-8;

 access_log logs/access.log main;

 location /images/ {
  root home/localhost/public_html;
  index index.php index.html;
 }
}

Папка с изображениями находится в домашней папке в winginx и добавляется как домен через hostseditor. Однако, когда я использую URL-адрес http://images, я получаю ошибку 404.

Если директива местоположения изменена на:

location / {
}

Тогда все работает нормально. Никакие регулярные выражения не работают, кроме случаев, когда я сопоставляю «/». Я прочитал директиву о местоположении, но не смог найти подходящей причины. Было бы здорово, если бы кто-нибудь указал на ошибку. Спасибо.


person Hrishikesh_Pardeshi    schedule 07.08.2013    source источник


Ответы (1)


Причина в том, что директива location соответствует URI (точнее, абсолютному пути Request-URI), а не Host.

Когда вы используете http://images, ваш браузер отправляет такой запрос:

GET / HTTP/1.1
Host: images

Обратите внимание, что URI запроса — /.

person VBart    schedule 07.08.2013