Nginx ошибка или особенность? - PullRequest
0 голосов
/ 21 июня 2020

Конфигурация 1 с заменой заголовка хоста:

  location /phpinfo {
    proxy_set_header Host $host;
    proxy_pass http://localhost:8000;              
  }

curl -s -o /dev/null -D - http://192.168.56.102/phpinfo
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Sun, 21 Jun 2020 13:12:05 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 323
Connection: keep-alive
Location: http://192.168.56.102:8000/phpinfo/

Конфигурация 2 только proxy_pass:

  location /phpinfo {
    proxy_pass http://localhost:8000;              
  }


curl -s -o /dev/null -D - http://192.168.56.102/phpinfo
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Sun, 21 Jun 2020 13:25:15 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 313
Location: http://192.168.56.102/phpinfo/
Connection: keep-alive

Итоги: Linux localhost 5.4.47-0-virt # 1-Alpine SMP Чт, 18 июня 2020 г., 14:54:31 UT C x86_64 Linux nginx версия: nginx / 1.18.0

proxy_pass с заменой заголовка Host, если конечный sla sh не определил перенаправления на :

http://192.168.56.102:8000/phpinfo/

Ожидается:

Location: http://192.168.56.102/phpinfo/

Это функция? Как это решить?

1 Ответ

0 голосов
/ 22 июня 2020

Такое поведение вызвано внутренним сервером (apache2). Он возвращает редирект 301, если в конце uri отсутствует sla sh. Итак, есть 2 решения:

  1. Изменить поведение внутреннего сервера.

  2. Использовать nginx директиву proxy_redirect:

    location / {proxy_set_header Host $ host; proxy_redirect http: // $ host: 8000 / /; proxy_pass http://localhost: 8000; }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...