Переадресация Nginx по имени сервера

Переадресация Nginx по имени сервера

У меня есть несколько докеризованных сервисов, обслуживающих http (и https). Внутренний http-порт (80) сопоставлен на уровне docker с другим портом, так что он доступен на хосте. И это работает нормально:

curl localhost:1234

Переносит меня к моему http-сервису в контейнере.

Теперь я хотел бы, чтобы это было доступно через dns, без указания порта (я хочу оградить клиентов от этого сопоставления портов). Я хотел бы использовать nginx для пересылки запросов на http://myserver1-> http://localhost:1234.

Можно ли настроить nginx таким образом? Можно ли настроить его для множественной пересылки следующим образом:

http://myserver1  --> http://localhost:1234
http://myserver2  --> http://localhost:1235
...

решение1

Да, оно может.

Параметр server_name используется для поиска наилучшего соответствия между различными сайтами, размещенными на одном сервере nginx, например

server {
  listen 80;
  listen [::]:80;
  server_name myserver1; 

и еще один такой

server {
  listen 80;
  listen [::]:80;
  server_name myserver2; 

Таким образом, они могут работать как на порту 80, так и совпадать в зависимости от того, вызваны ли ониhttp://мойсервер1илиhttp://myserver2.

Теперь как подключиться к вашим услугам? Вы можете определить поставщиков услуг вышестоящего уровня, например

#place this outside of the 'server{' block
upstream server1 {
  server localhost:1234;
} 

а затем перенаправить на него через

# place this inside the 'server{' block
location / {
  proxy_pass http://server1;
}

Связанный контент