В чем разница между $ http_host: $ proxy_port и $ host: $ server_port в Nginx - PullRequest
0 голосов
/ 05 августа 2020

Компания, в которой я работаю, использует Nginx для обратного прокси и балансировщика нагрузки, поэтому я просто добавляю еще один блок в файл nginx .conf, как показано ниже для новой службы, при запросе сервера Nginx с curl http://10.11.12.15:8080/api Nginx возвращает 400 Bad Request, однако после изменения этой конфигурации proxy_set_header Host $http_host:$proxy_port; на proxy_set_header Host $host:$server_port; решается проблема Bad Request. Но я не понимаю сути.

Я уже прочитал эти ответы В чем разница между $ host и $ http_host в Nginx и Практическая разница между $ http_host и $ host .

Но однозначного ответа на эту ситуацию нет. В чем разница между этими заголовками?

proxy_set_header Host $http_host:$proxy_port;

proxy_set_header Host $host:$server_port;

Использовал этот блок;

 upstream web-service {

    server 10.11.12.13:8080;
    server 10.11.12.14:8080 backup;
  }
  server {

    listen 8080;
    server_name myHost 10.11.12.15;
    location / {

      proxy_pass http://web-service;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header Host $http_host:$proxy_port;  # Throw HTTP 400 Bad Request
  #   proxy_set_header Host $host:$server_port;      # Working solution
    }
  }
...