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.