Amigos,
Quando olho os logs do Nginx, eu recebo apenas o IP dos container internos. Como eu posso configurar o swarm para enviar para o Nginx o IP original do usuário?
Obrigado
Amigos,
Quando olho os logs do Nginx, eu recebo apenas o IP dos container internos. Como eu posso configurar o swarm para enviar para o Nginx o IP original do usuário?
Obrigado
Opa Emerson, tudo bem?
Deixa eu confirmar se entendi. Você tem o nginx rodando dentro de um nó qualquer de um cluster e não quer pegar o IP dos nós, e sim da máquina host?
Olá Daniel, Obrigado pelo retorno. Eu preciso ter acesso ao IP original do usuário que esta acessando o meu ambiente.
Eu preciso salvar esses dados de acesso.. Como hora, path, IP, etc... Pego essas infos no log de acesso do Nginx, porem o IP que vem é do nodes internos.. O que eu preciso é que venha o IP original do usuário que acessou..
Exemplo:
| 10.0.24.144 - - [19/May/2020:07:24:42 +0000] "GET /media/kderno/files/2020/05/13/anigif_sub-buzz-22161-1512589653-2.gif HTTP/1.1" 200 997632 "http://localhost:3000/@lucas/kderno-de-lucas" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" "10.0.0.2"
onde vemos 10.0.24.144, deveríamos ver o IP real do usuario que esta acessando.
Qual comando você está executando para criar o nginx?
Estou usando docker swarm
version: '3.3'
services:
nginx:
image: nginx:latest
volumes:
- /mnt/data/images:/var/www/images
- /mnt/data/images:/var/www/media
networks:
- frontends
- traefik
logging:
driver: json-file
deploy:
replicas: 3
labels:
traefik.docker.network: traefik
traefik.enable: 'true'
traefik.http.routers.nginx.entrypoints: websecure
traefik.http.routers.nginx.rule: Host(`XXXX`)
traefik.http.routers.nginx.tls.certresolver: mytlschallenge
traefik.http.services.nginx.loadbalancer.server.port: '80'
restart_policy:
condition: on-failure
placement:
constraints:
- node.role == manager
networks:
frontends:
external: true
traefik:
external: true
Uma possibilidade seria você utilizar apenas uma réplica para execução do serviço do nginx e fazer a publicação utilizando o modo host. Algo como:
ports:
- mode: host
....
Caso realmente haja a necessidade de utilizar mais de uma réplica, você pode deixar a atribuição de portas de maneira randômica.