Рейтинг:0

Синтаксис имени восходящего сервера обратного сервера nginx

флаг jp

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

Пожалуйста, обратитесь к этой фотографии Фото: структура обратного прокси-сервера nginx

Когда я скручиваю 192.168.189.140, прокси-сервер показывает

  1. [debug] vhost.c(811): [client 192.168.189.140] [strict] Неверное имя хоста 'bbs_server_pools', проблема рядом: _serve

  2. [отладка] vhost.c(902): [клиент 192.168.189.140] Клиент отправлен неправильно Заголовок хоста: bbs_server_pools

После того, как я изменил имя основной ветки bbs_server_pools на bbs, все заработало. Это как-то связано с версией nginx или с чем-то еще?

  1. ошибка в файле Nginx.conf

    рабочие_процессы 1;
    журналы error_log/ошибка error.log;
    
    События {
    worker_connections 1024;
    }
    
    http {
    включить mime.types;
    default_type application/octet-stream;
    отправить файл включен;
    keepalive_timeout 65;
    log_format main '$remote_addr - $remote_user [$time_local] "$request"'
                    '$статус $body_bytes_sent "$http_referer"'
                    '"$http_user_agent" "$http_x_forwarded_for"';
    
    сервер {
    слушать 80;
    имя_сервера bbs.etiantian.org;
    место расположения / {
         proxy_pass http://bbs_server_pools;   
       } 
    }    
    
    восходящий bbs_server_pools {
    сервер 192.168.189.137:80;
    сервер 192.168.189.138:80 вес=3;
    }  
    
    
    }
    
  2. хороший файл nginx.conf после изменения bbs_server_pools на bbs

    рабочие_процессы 1;
    журналы error_log/ошибка error.log;
    
    События {
    worker_connections 1024;
    }
    
    http {
    включить mime.types;
    default_type application/octet-stream;
    отправить файл включен;
    keepalive_timeout 65;
    log_format main '$remote_addr - $remote_user [$time_local] "$request"'
                    '$статус $body_bytes_sent "$http_referer"'
                    '"$http_user_agent" "$http_x_forwarded_for"';
    
    сервер {
    слушать 80;
    имя_сервера bbs.etiantian.org;
    место расположения / {
         прокси_пароль http://bbs;   
       } 
    }    
    
    вверх по течению bbs {
    сервер 192.168.189.137:80;
    сервер 192.168.189.138:80 вес=3;
    }  
    
    
    }
    
Рейтинг:0
флаг gr

К самому nginx эта ошибка отношения не имеет (ну почти ничего). Он возвращается вашим вышестоящим сервером. Причина в том, что два заголовка HTTP-запроса, включая Хозяин один из них всегда переопределяется, если только какое-либо другое поведение не указано явно с помощью proxy_set_header директива:

По умолчанию переопределяются только два поля:

proxy_set_header Хост $proxy_host;
proxy_set_header Соединение закрыто;

Хозяин значением заголовка переадресованного запроса будет bbs_server_pools с вашей первой конфигурацией и ббс со вторым. Однако допустимыми символами для имен хостов являются буквы ASCII из а к г, цифры из 0 к 9, и дефис (-).Хотя подчеркивание является допустимым символом для имени восходящего потока nginx, оно недопустимо для имени хоста, и это является причиной ошибки, которую вы получаете от своего восходящего потока. Обычно рекомендуется сохранять Хозяин значение заголовка из исходного запроса с использованием

proxy_set_header Хост $host;

(или же $http_host, вы можете проверить разницу здесь). Однако могут быть случаи, когда этого делать не следует; проверять это ответ, чтобы узнать больше информации по этому вопросу.

флаг jp
Привет Иван! Большое спасибо! Ваш ответ полностью решил мою проблему
Ivan Shatsky avatar
флаг gr
Способ благодарности ServerFault за рабочий ответ описан [здесь](https://serverfault.com/tour#:~:text=The%20person%20who%20asked%20can%20mark%20one%20answer%20as%20% 22принято%22.) :)

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

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