# Como posso modificar a configuração do Nginx diretamente dentro do discourse/docker?

**URL:** https://meta.discourse.org/t/how-can-i-modify-the-nginx-configuration-directly-within-discourse-docker/406863
**Category:** Self-hosting
**Tags:** nginx
**Created:** [5 Julho , 2026 08:51 UTC](https://meta.discourse.org/t/how-can-i-modify-the-nginx-configuration-directly-within-discourse-docker/406863 "2026-07-05T08:51:52Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Boubou](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/boubou/32/569633_2.png) [@Boubou](https://meta.discourse.org/u/Boubou)
#### Post date: [5 Julho , 2026 08:51 UTC](https://meta.discourse.org/t/how-can-i-modify-the-nginx-configuration-directly-within-discourse-docker/406863/1 "2026-07-05T08:51:52Z")

</div>

Gostaria de modificar a configuração do Nginx/Docker, pois minha instalação do Discourse está atrás de um HAProxy. O problema que estou enfrentando é o seguinte:  
Todos os endereços IP que se conectam à minha instalação do Discourse aparecem como o endereço IP do HAProxy.  
Preciso adicionar as seguintes linhas ao arquivo de configuração do Nginx:

`set_real_ip_from 127.0.0.1;`  
`real_ip_header proxy_protocol;`

…para que os endereços IP públicos que se conectam à minha instalação do Discourse sejam passados ao Nginx.  
Obrigado pela ajuda.

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [5 Julho , 2026 09:42 UTC](https://meta.discourse.org/t/how-can-i-modify-the-nginx-configuration-directly-within-discourse-docker/406863/2 "2026-07-05T09:42:50Z")

</div>

Provavelmente você **não** quer apenas:

```nginx
set_real_ip_from 127.0.0.1;
real_ip_header proxy_protocol;

```

Isso só está correto se **ambas** as condições abaixo forem verdadeiras:

1. O HAProxy está realmente enviando o protocolo PROXY para o container do Discourse.
2. O Nginx dentro do container do Discourse vê o HAProxy como `127.0.0.1`.

Em muitas configurações de Docker com HAProxy → Discourse, a abordagem mais simples e comum é usar `X-Forwarded-For`, e não o protocolo PROXY.

Para o HAProxy, certifique-se de que ele envie o cabeçalho de IP encaminhado:

```haproxy
defaults
    mode http
    option httplog
    option forwardfor

```

ou no backend:

```haproxy
backend be_discourse
    option forwardfor
    server app 127.0.0.1:8080 check

```

Em seguida, na configuração do container do Discourse, persista as alterações de IP real do Nginx por meio do `app.yml`. Não edite os arquivos diretamente dentro do container em execução, pois eles serão perdidos na reconstrução.

Adicione algo como isso ao `/var/discourse/containers/app.yml` na seção `run:` existente:

```yml
run:
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: "types {"
      to: |
        set_real_ip_from 127.0.0.1;
        # ajuste isso para a faixa de rede/ponte Docker real da qual o HAProxy se conecta
        set_real_ip_from 172.17.0.0/16;
        real_ip_header X-Forwarded-For;
        real_ip_recursive on;
        types {

```

Em seguida, reconstrua:

```bash
cd /var/discourse
./launcher rebuild app

```

Pode ser necessário ajustar `set_real_ip_from` para corresponder ao IP/faixa de origem real que o Nginx dentro do container do Discourse vê quando o HAProxy se conecta a ele. Com Docker, isso geralmente não é `127.0.0.1`; pode ser um endereço de ponte Docker, como `172.17.0.1`, ou uma faixa de rede Docker definida pelo usuário.

Se você realmente quiser usar o protocolo PROXY, o HAProxy deve enviá-lo explicitamente:

```haproxy
backend be_discourse
    server app 127.0.0.1:8080 check send-proxy

```

e o Nginx deve ouvir com `proxy_protocol`, não apenas ler `real_ip_header proxy_protocol`:

```yml
run:
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: "listen 80;"
      to: "listen 80 proxy_protocol;"

  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: "types {"
      to: |
        set_real_ip_from 127.0.0.1;
        set_real_ip_from 172.17.0.0/16;
        real_ip_header proxy_protocol;
        types {

```

A correção importante é: **`real_ip_header proxy_protocol` sozinho é incompleto**. O Nginx também precisa de `listen 80 proxy_protocol;`, e o HAProxy precisa de `send-proxy`. Caso contrário, use `X-Forwarded-For`, que é a configuração padrão do modo HTTP do HAProxy. No HAProxy, `option forwardfor` é a maneira padrão de adicionar o cabeçalho de IP do cliente `X-Forwarded-For`. Com o protocolo PROXY do Nginx, a diretiva `listen` deve incluir `proxy_protocol` antes que `real_ip_header proxy_protocol` possa funcionar.

Então, a versão resumida é:

- Use `X-Forwarded-For`, a menos que você tenha um motivo específico para usar o protocolo PROXY.
- Não misture os dois modos.
- Se o HAProxy não estiver usando `send-proxy`, então `real_ip_header proxy_protocol` não funcionará.
- Se estiver usando o Discourse Docker, faça a alteração no `app.yml`, e não diretamente dentro do container em execução.

---

<div class="post-metadata">

### Author: ![Boubou](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/boubou/32/569633_2.png) [@Boubou](https://meta.discourse.org/u/Boubou)
#### Post date: [5 Julho , 2026 16:53 UTC](https://meta.discourse.org/t/how-can-i-modify-the-nginx-configuration-directly-within-discourse-docker/406863/3 "2026-07-05T16:53:27Z")

</div>

Obrigado pela sua ajuda.

Aqui está a solução que funcionou para mim:

1. Desativei o Let’s Encrypt e o HTTPS:

````plaintext
#- templates/web.ssl.template.yml

#- templates/web.letsencrypt.ssl.template.yml
```\n
2. O HAProxy agora gerencia os certificados SSL para o Discourse
3. Usei esta configuração no arquivo `/var/discourse/containers/app.yml`

````

run:

- replace:  
filename: /etc/nginx/conf.d/discourse.conf  
from: “types {”  
to: |  
set\_real\_ip\_from 192.68.1.8; # ENDEREÇO IP DO HAProxy  
real\_ip\_header X-Forwarded-For;  
real\_ip\_recursive on;  
types {

```plaintext

e agora tenho os IPs públicos na interface de administração do Discourse:

![Screenshot_20260705_184755_Chrome|686x321](upload://xt9PVScHKKFJ3FtoCXRsI1UU9AM.jpeg)

@Ethsim2

Obrigado mais uma vez pela sua ajuda. :grin:
```

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [4 Agosto , 2026 16:54 UTC](https://meta.discourse.org/t/how-can-i-modify-the-nginx-configuration-directly-within-discourse-docker/406863/4 "2026-08-04T16:54:07Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
