Contêineres do Docker atrás do proxy reverso - reescreva problemas com o CMS

1

Estou tentando acessar vários contêineres docker em execução em um servidor por meio de um nginx como um proxy reverso.

Cada contêiner é um CMS autocontido. Alguns são wordpress, alguns são drupal, etc etc.

O comando em que estou iniciando os contêineres:

docker run -p 0.0.0.0:{$port}:80 -i -t loader-docker

A grande diferença aqui é que quero acessar cada contêiner por meio de um caminho em vez de um subdomínio.

Por exemplo: link link

Eu posso fazer isso facilmente com a seguinte configuração

server {
        listen          80;
        server_name     example.com;

        location / {}

        location /docker-1/ {
                proxy_set_header        Host $host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Proto $scheme;
                proxy_pass docker.server:8001;
        }

        location /docker-2/ {
                proxy_set_header        Host $host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Proto $scheme;
                proxy_pass docker.server:8002;
        }
}

Quando vou para o link , estou atingindo o contêiner do Docker em execução na porta 8001 em um servidor interno. Da mesma forma, quando vou para o link

O problema é que, enquanto cada um desses contêineres está executando o CMS, nenhum dos caminhos está correto e todos os recursos não são carregados.

O caminho que o CMS está procurando é, na verdade, docker.server (o servidor interno), mas está obtendo o link

É possível resolver isso no nginx, ou eu tenho que escrever regras de .htaccess personalizadas para cada um dos contêineres? Se sim, como eu faria isso?

Devo observar que cada contêiner está executando o Apache como seu servidor da Web.

    
por Chris Turner 25.03.2016 / 01:15

1 resposta

-1

Esse é um problema comum para quem deseja trabalhar com o ambiente de caixa de proteção. Se eu tiver o seu problema corretamente, você está procurando a parte errada do sistema para a solução.

Você precisa alterar seus caminhos cms. Eu acho que você pode usar variáveis de ambiente, talvez chamado root_path e, em seguida, podemos passar o valor do proxy ou outra coisa na hora inicial para o contêiner.

    
por 11.04.2016 / 22:50