
Вот краткий конфиг моего Nginx:
...
server {
listen 80;
server_name whatever;
root /var/www/;
location /api/1.0 {
...
`proxy_pass http://localhost:8000/;
}
location /api/2.0 {
...
proxy_pass http://localhost:8080/;
}
location / {
root /var/www/static/;
default_type text/html;
try_files $uri $uri/index.html index.html;
}
}
Если я теперь перейду к localhost
и добавлю случайное имя, которое не соответствует ничему в моих статических файлах или ничего не означает ни в одном из двух приложений (например, http://localhost/whatever
), я получу странную ошибку в своем журнале:
2013/09/14 20:58:20 [ошибка] 28731#0: *2 open() "/var/wwwindex.html" не удалось (2: нет такого файла или каталога), клиент: 127.0.0.1, сервер: ec2-54-234-175-21.compute-1.amazonaws.com, запрос: "GET /whatever HTTP/1.1", хост: "localhost"
Я думаю, это просто отражает мое непонимание, потому что я действительно не понимаю, почему nginx пытается получить доступ к "/var/wwwindex.html". Обратите внимание, что я не хочу, чтобы этот запрос был успешным, я просто хочу, чтобы он потерпел неудачу понятным мне способом. Что именно происходит? Буду признателен за мысли, заранее спасибо!
решение1
Ваш try_files
заканчивается на index.html
, который добавляется к root
(и завершающий символ /
игнорируется root
). Добавьте /
к нему a.
try_files $uri $uri/index.html /index.html;