Как настроить директиву Location для другого URI контекста - PullRequest
0 голосов
/ 21 февраля 2019

что происходит:

Я использую следующий файл nginx.conf для балансировки нагрузки.веб-приложение работает и работает через порт nginx 8080 и может получить доступ к целевой странице.однако при переходе с целевой страницы на страницу регистрации возникает ошибка.

что ожидается:

Балансировщик нагрузки nginx должен перенаправить нагрузку на страницу.как указано в директиве о местонахождении.но этого не происходит.

файл nginx:

events {

}

http {

upstream 3.121.253.126 {
    server 3.121.253.126:8080;
    server 3.121.253.126:8080;
    server 3.121.253.126:8080;
 }
  error_log /etc/nginx/error_log.log warn;
  client_max_body_size 20m;

  proxy_cache_path /etc/nginx/cache keys_zone=one:500m max_size=1000m;

  server {
    listen 8080;
    server_name 3.121.253.126;
    root /etc/nginx/html;
    index index.html;

    location /signup {
      root /etc/nginx/html;
      index add-user.html;

    #  proxy_pass http://localhost:8080/signup;
    #  proxy_set_header Host $host;
   #   rewrite ^/welcome(.*)$ $1 break;
    }

  }

}

вот журнал ошибок:

2019/02/2109:07:42 [ошибка] 6 # 6: * 510 recv () завершилась неудачно (104: сброс соединения по одноранговому узлу) при чтении заголовка ответа из восходящего потока, клиент: 127.0.0.1, сервер: 3.121.253.126, запрос: «GET /регистрация HTTP / 1.0 ", восходящий поток:" http://127.0.0.1:8080/signup", хост: "localhost: 8080", реферер: "http://3.121.253.126:8080/" 2019/02/21 09:07:42 [warn] 6 # 6: *Восходящий сервер 510 временно отключен при чтении заголовка ответа из восходящего потока, клиент: 127.0.0.1, сервер: 3.121.253.126, запрос: «GET / signup HTTP / 1.0», восходящий поток: «http://127.0.0.1:8080/signup", host:» localhost: 8080", реферер:" http://3.121.253.126:8080/" 2019/02/21 09:13:10 [error] 6 # 6: * 1 open () "/ etc / nginx / html / signup" не удалось (2: такого файла нетили каталог), клиент: 157.33.175.127, сервер: 3.121.253.126, запрос: «GET / signup HTTP / 1.1», хост: «3.121.253.126:8080», реферер: «http://3.121.253.126:8080/" 2019/02 /21 09:15:57 [ошибка] 6 # 6: * 3 open () "/ etc / nginx / html / signup" не удалось (2: такого файла нет иликаталог), клиент: 157.33.175.127, сервер: 3.121.253.126, запрос: «GET / signup HTTP / 1.1», хост: «3.121.253.126:8080», реферер: «http://3.121.253.126:8080/"

согласно журналу, он ожидает регистрации файла HTML.Тем не менее, я инструктирую его использовать файл add-user.html.не уверен, почему этого не происходит.

пожалуйста, предложите

1 Ответ

0 голосов
/ 21 февраля 2019

Вы хотите указать URI /signup на файл, расположенный по адресу /etc/nginx/html/add-user.html

. Существует несколько способов добиться этого с помощью Nginx, включая директивы rewrite и try_files.

Например:

location /signup {
    try_files /add-user.html =404;
}

Директива root не должна повторяться в этом блоке location, поскольку она унаследует то же значение от окружающего блока.

=404 ничего не делает, поскольку add-user.html всегда существует, но try_files требует двух параметров.Подробнее см. в этом документе .

В указанном выше местоположении будет обрабатываться любой запрос, начинающийся с /signup (например, /signup/ или /signups).

Ограничениедля одного URI /signup используйте модификатор =.Подробнее см. в этом документе .

Например:

location = /signup {
    try_files /add-user.html =404;
}
...