Рейтинг:0

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

флаг jp

У нас есть один сайт NextJs, при следующем экспорте мы получаем одну папку, которую мы хотим обслуживать из Nginx. В out/login есть один '[[...parameter]].html. Когда мы развертываем сайт с помощью pm2, он работает, если мы нажимаем URL-адрес «serverIP:port/login/programID/applicant»

Но при подаче через nginx не работает.

Ниже приведено содержимое файла конфигурации nginx:

сервер {

    слушать 7001;
    имя_сервера IP_сервера;
    корень /var/www/html/out/;
   место расположения / {

            try_files $uri $uri.html $uri.html/ =404;
   }

}

Пожалуйста помоги. Я новичок в nginx, поэтому возникли некоторые трудности.

Рейтинг:0
флаг ru

Строка запроса относится к параметрам 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 и распространенные ошибки.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.