Installare Discourse su una connessione internet domestica con Cloudflare Tunnel

yo @Falco, il real_ip (fornito da cf come header CF-Connecting-IP) ti arriva nei log di nginx? A me no. Vedo solo l’IP di cloudflared.

Penso che una o entrambe queste cose debbano essere fatte (farò seguito dopo le indagini):

  • aggiungere una riga di configurazione set_real_ip_from a nginx per l’IP di cloudflared. Se questo si rivela essere il problema, allora immagino che nessuna delle altre righe set_real_ip_from (fornite da templates/cloudflare.template.yml) sia necessaria per gli utenti di argotunnel. E in questo caso, forse un template argotunnel separato dovrebbe essere aggiunto al repository docker che estrae il tuo IP cloudflared da una variabile d’ambiente o qualcosa del genere nel tuo app.yml principale.
  • correggere il log_format. Penso che probabilmente non sia questo il problema, però. confermato non necessario

modifica:
ecco cosa sto facendo per farlo funzionare:

non usare il template cloudflare. non ha senso.
invece, unisci questo nel tuo app.yml:

hooks:
  after_web_config:
    - file:
        path: /etc/nginx/conf.d/cloudflare_tunnel_real_ip.conf
        contents: |
          # ripristina gli IP originali dei visitatori (ngx_http_realip_module)
          set_real_ip_from 10.100.20.200/32; # il tuo intervallo IP cloudflared/argotunnel
          real_ip_header CF-Connecting-IP;

questo finisce automaticamente nel contesto http di nginx, che è appropriato.

PS: secondo me, per pulizia, il template cloudflare dovrebbe anche generare la sua configurazione nginx in un file separato invece di usare sed -i per aggiungerla a /etc/nginx/conf.d/discourse.conf.

1 Mi Piace