Рейтинг:0

Как добавить несколько ip и добавить поддомен в nginx?

флаг ru

Я следил за nginx, uwsgi с учебником по фляге и докеру. Мой файл конфигурации nginx содержит:

сервер {

слушать 5000;
имя_сервера 19X.X.X.X;

client_header_buffer_size 5M;
large_client_header_buffers 4 5M;
client_max_body_size 75M;

место расположения / {
    включить uwsgi_params;     
    колба uwsgi_pass:8080;
   }
}

Здесь я хочу добавить дополнительный IP-адрес, например 123.345.67.8 и субдомен test.mydomain.com. Как я могу добавить туда?

РЕДАКТИРОВАТЬ 2:


сервер {

слушать 1.1.1.1:5000 default_server;
имя_сервера локальный хост;

client_header_buffer_size 5M;
large_client_header_buffers 4 5M;
client_max_body_size 75M;

место расположения / {
    включить uwsgi_params;     
    колба uwsgi_pass:8080;
   }
}


сервер {

слушать 2.2.2.2:5000 default_server;
имя_сервера test.mydomain.com;

client_header_buffer_size 5M;
large_client_header_buffers 4 5M;
client_max_body_size 75M;

место расположения / {
    включить uwsgi_params;     
    колба uwsgi_pass:8080;
   }
}
Ivan Shatsky avatar
флаг gr
Вы можете перечислить любое количество имен серверов с помощью директивы `server_name`. Однако, имея только один блок сервера, подобный этому, nginx будет использовать его для обработки каждого запроса, поступающего на TCP-порт 5000, независимо от того, на какой IP-адрес он пришел или каково значение заголовка HTTP «Host». См. страницу официальной документации [Как nginx обрабатывает запрос](http://nginx.org/en/docs/http/request_processing.html) или [эту](https://stackoverflow.com/a/60362700/7121513) ответ для еще более подробной информации.
флаг ru
@IvanShatsky Спасибо за ответ. Пожалуйста, смотрите EDIT1 моего вопроса. Если я это сделаю, смогу ли я получить к нему доступ с помощью «1.1.1.1:5000», а также «test.mydomain.com»?
Ivan Shatsky avatar
флаг gr
Я думаю, вы понятия не имели о **сервере по умолчанию**.Если ваш сервер прослушивает оба IP-адреса `1.1.1.1` и `2.2.2.2`, ваш первый блок сервера будет обслуживать каждый запрос, поступающий на порт 5000. Вам не нужно определять второй блок сервера. Он понадобится вам, только если вы хотите обслуживать разные сайты на `1.1.1.1` и `2.2.2.2`. А использование `test.mydomain.com` в адресной строке браузера заставит браузер использовать порт 80/443 в зависимости от схемы `htttp://` или `https://`, вам нужно будет явно указать порт : `http://test.mydomain.com:5000/...`
флаг ru
@IvanShatsky Это ясное представление о сервере по умолчанию. Спасибо. Но позвольте мне прояснить один вопрос. Например, я хочу добавить IP-адрес 1.1.1.1, который работает для доступа к частной сети. И хотите добавить 2.2.2.2 -> https://test.mydomain.com для публичного доступа. Тогда как я могу изменить эту проблему?
флаг ru
Пожалуйста, посмотрите РЕДАКТИРОВАТЬ 2 (обновлено), теперь это будет работать?
Ivan Shatsky avatar
флаг gr
Насколько я понимаю, если вы хотите обслуживать один и тот же сайт для обоих адресов, вам не нужно ничего, кроме одного блока сервера с директивой `listen 5000;`. Вам даже не нужно указывать имя сервера, если ваш домен `test.mydomain.com` разрешается в ваш адрес. Он будет обслуживать любой запрос, поступающий на TCP-порт 5000. Я думаю, ссылки, которые я приводил ранее, вполне объяснимы.

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

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