Ratenbegrenzung mit Reverse Proxy

Ich hatte eine Frage dazu, welcher Header für die Ratenbegrenzung verwendet wird. Zur Information: Wir haben eine nginx.conf mit set_real_ip und verwenden einen Anbieter, der uns Traffic mit der tatsächlichen IP des Clients im Header Some-Client-IP sendet.

  sendfile on;
set_real_ip_from ...;
set_real_ip_from ...;
set_real_ip_from ...;
set_real_ip_from ...;

real_ip_header Some-Client-IP;
real_ip_recursive on;

Some-Client-IP ist das, was wir vom Upstream mit der tatsächlichen IP des Benutzers erhalten.

In der aktuellen discourse.conf in conf.d für nginx haben wir die Standardeinstellung:

Für ich denke alle Routen im Allgemeinen

    proxy_set_header Host $http_host;
    proxy_set_header X-Request-Start "t=${msec}";
    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 $thescheme;
    proxy_pass http://discourse;

Berücksichtigt Discourse X-Forwarded-For oder X-Real-IP für die Ratenbegrenzung? Ich denke, es berücksichtigt X-Forwarded-For, weil ich in production.log die IP meines Reverse-Proxys sehe. Ist die richtige Lösung, X-Forwarded-For ebenfalls auf $remote_addr umzustellen?

Aus diesem Thread scheint es, als hätte jemand diese Zeile einfach gelöscht: Last IP shows Reverse Proxy IP address - #5 by schleifer

Danke

1 „Gefällt mir“

Haben Sie diese Klausel zu Ihrer app.yml hinzugefügt? Diese Einstellungen müssen im NGINX innerhalb des Containers vorgenommen werden. Siehe auch Set up Discourse on a server with existing Apache sites. Das ist für Apache, aber der Teil, der in app.yml kommt, ist unabhängig davon, was den Reverse Proxy macht, derselbe.

Diese Strophen befinden sich in der aktuellen nginx.conf anstelle unseres Containers unter conf.d/discourse.conf.

Meinten Sie für den app.yml-Teil

run:
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: "types {"
      to: |
        set_real_ip_from 172.17.0.0/24;
        real_ip_header X-Forwarded-For;
        real_ip_recursive on;
        types {

Wir haben kein HAProxy außerhalb der Container, wir haben einen DNS-Anbieter, der einige Vorverarbeitungen für uns durchführt, sodass der real_ip_header in einem anderen Header-Wert steht, und wir haben tatsächlich eine Liste von IP-Adressen, die ersetzt werden müssen.

Wir sehen tatsächlich auch eine Liste von X-Forwarded-For, ich frage mich, ob das der Grund dafür ist, dass die falschen IPs angezeigt werden.

Zum Beispiel sehe ich in den Produktionsprotokollen 111.11.11.111, aber nicht 55.555.55.55, was wir wollen (da es in x-real-ip gesetzt ist).

HTTP_X_FORWARDED_FOR	111.11.11.111, 22.22.22.222, 333.33.33.333, 55.555.55.55
HTTP_X_REAL_IP	55.555.55.55

Dann müssen Sie die empfohlene Konfiguration entsprechend anpassen.

Oder, wenn Ihnen IP-Adressen oder Ratenbegrenzung egal sind, können Sie die Vorlage für die Ratenbegrenzung anpassen.

1 „Gefällt mir“