Как настроить два экземпляра с Nginx и Terraform? - PullRequest
0 голосов
/ 05 мая 2018

У меня есть этот код:

resource "docker_image" "nginx" {                        
  name = "nginx:1.11-alpine"                             
}                                                        
resource "docker_container" "nginx-server" {          
  name = "nginx-server"                               
  image = "${docker_image.nginx.latest}"              
  ports {                                             
    internal = 80                                     
    external = 80                                     
  }                                                   
  volumes {                                           
    container_path  = "/usr/share/nginx/html"         
    host_path = "/home/scrapbook/tutorial/www"        
    read_only = true                                  
  }                                                   
} 

в файле terraform (.tf) ... Я хочу настроить два экземпляра веб-программы, которые обслуживаются в двух разных портах на одном сервере.

resource "docker_container" "Odoo-iku_1" {                 
  name  = "Odoo-iku 1"                                     
  image = "ikusolutions/odoo-iku:latest"                 
  links = ["db"]                                         
  ports {                                                
    external = 8070                                      
    internal = 8069                                   
  }    
}

и

resource "docker_container" "Odoo-iku_2" {                 
  name  = "Odoo-iku 2"                                     
  image = "ikusolutions/odoo-iku:latest"                 
  links = ["db"]                                         
  ports {                                                
    external = 8071                                      
    internal = 8069                                   
  }    
}

Как заставить nginx адресовать внешние порты 8070 и 8071 доменным именам? пример: порт 8070 направлен на https://iku.solutions, а порт 8071 направлен на https://demo.iku.solutions

1 Ответ

0 голосов
/ 05 мая 2018

Nginx маршрутизирует трафик, попадающий на сервер, в соответствии с тем, как вы его настроили.
В вашем случае вы хотите настроить nginx в качестве обратного прокси-сервера, который направляет запросы в соответствии с именем сервера, к которому они пытаются обратиться. Эта конфигурация должна работать для вас, при условии, что запросы на Odoo-iku 1 Odoo-iku 2 поступают от Odoo-iku1.example.com и Odoo-iku2.example.com соответственно -

server {
  listen      8001 default_server;
  server_name Odoo-iku1.example.com;
  location / {
    proxy_pass       http://127.0.0.1:8071;
  }
}

server {
  listen      8002 default_server;
  server_name Odoo-iku2.example.com;
  location / {
    proxy_pass       http://127.0.0.1:8070;
  }
}

upstream main {
  server 127.0.0.1:8001;
  server 127.0.0.1:8002;
}

server {
  listen      80;
  server_name example.com;
  location / {
    proxy_pass http://main;
  }
}
...