Строка запроса относится к параметрам GET, которые вы указываете после URL, например ?имя=фу
. Я предполагаю, что вместо этого вы хотите обслуживать файлы в каталоге, поскольку вы упоминаете «внешнюю папку, которую мы хотим обслуживать из Nginx».
В этом случае ваш пример должен работать нормально, но ваш try_files правило предполагает, что вы также предоставите имя файла внутри URL-адреса.
Итак, когда вы запрашиваете GET www.mysite.com затем Nginx пытается найти
путь внутри корень
каталог с любым именем /
, .html
, .html/
или сбой с кодом ошибки 404. Дорожка .html/
относится к каталогу с именем .html
внутри вашего корня и, вероятно, является ошибкой.
Если у вас есть файл с именем index.html
в указанном вами корневом каталоге, для него будут соответствовать следующие запросы:
ПОЛУЧИТЬ www.mysite.com/index.html
(потому что $ури
)
ПОЛУЧИТЬ www.mysite.com/index
(потому что $uri.html
)
То, что вы, вероятно, ищете, это:
место расположения / {
корень /var/www/html/out;
индекс index.html index.htm;
try_files $uri $uri/ =404;
}
Это делает следующее:
- Существует ли фактический файл, указанный $ури, в вашем корневом каталоге, а затем подавайте это.
- Есть ли путь к каталогу, указанный $ури, в вашем корневом каталоге?
- Если да, проверьте, содержит ли он файл с именем index.html или же index.htm - тогда служить это.
- Ничего из вышеперечисленного, возврат 404.
Так ПОЛУЧИТЬ www.mysite.com
попробуй найти файл index.html
или же index.htm
внутри вашего корня.
Если вы все еще имеете в виду строки запроса, вы можете написать что-то вроде этого:
место расположения / {
корень /var/www/html/out;
try_files /$arg_file = 404;
}
Затем запросите лайк ПОЛУЧИТЬ www.mysite.com?file=index.html
будет искать файл index.html
внутри вашего корня. Nginx — это круто, не так ли?
Надеюсь это поможет :)
Также читайте больше о try_files и Подводные камни Nginx и распространенные ошибки.