IP-Filterung auf Apache-nginx-Combo

IP-Filterung auf Apache-nginx-Combo

Wir haben die Anfrage, eine Domain zu sichern, indem der Zugriff auf die IP-Bereiche einer WAF-Cloud beschränkt wird. Der Server führt Apache für PHP und nginx als Reverse-Proxy-Server aus, sodass die Kette vom Browser zur Website vermutlich lautet: Client <-> DNS <-> WAF <-> nginx <-> Apache

Beim Durchsehen der Protokolle habe ich festgestellt, dass die von nginx erfüllten Anfragen tatsächlich von den IPs der WAF stammen, die von Apache beantwortet wurden, nicht (wenn ich auf die Website gehe, sehe ich meine eigene IP-Adresse in den Protokollen). nginx ist mithilfe von Plesk so konfiguriert, dass es sich im Proxy-Modus mit intelligenter Verarbeitung statischer Dateien befindet.

Das Anwenden der Anweisungen auf Apache (htaccess) führt zu 403, was nicht überraschend ist, da keine Anforderungen vom WAF-Server empfangen werden.

Ich konnte die Anweisungen nicht mit Plesk auf nginx anwenden (Zusätzliche Anweisungen). Dies gibt mir eine Fehlermeldung. Ich habe versucht

location / {
    allow 199.83.128.0/21;
    allow 2a02:e980::/29;
    deny all;
}

nginx: [emerg] doppelter Speicherort "/" in /var/www/vhosts/system/example.co/conf/vhost_nginx.conf:1 nginx: Test der Konfigurationsdatei /etc/nginx/nginx.conf fehlgeschlagen

Auf diesem Server laufen Plesk 17.8.11, nginx 1.14.2 und Apache 2.4.7 unter Ubuntu 14.04.6. Dieser Server hostet mehrere Domänen.

Ist die Art und Weise, wie ich das Problem zu lösen versuche, richtig? Warum erhalte ich diesen Fehler?

Hinzufügen der Konfigurationsdatei der Domäne mit der Standortanweisung:

#ATTENTION!
#
#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY,
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED.

server {
    listen 00.000.00.00:443 ssl http2;

    server_name example.com;
    server_name www.example.com;
    server_name ipv4.example.com;

    ssl_certificate             /opt/psa/var/certificates/scfPNclj5;
    ssl_certificate_key         /opt/psa/var/certificates/scfPNclj5;
    ssl_client_certificate      /opt/psa/var/certificates/scf58Rxns;

    client_max_body_size 128m;

    proxy_read_timeout 300;

    root "/var/www/vhosts/example.com/httpdocs";
    access_log "/var/www/vhosts/system/example.com/logs/proxy_access_ssl_log";
    error_log "/var/www/vhosts/system/example.com/logs/proxy_error_log";

    if ($host ~* ^superglass\.de$) {
        rewrite ^(.*)$ https://www.example.com$1 permanent;
    }

    #extension letsencrypt begin
    location ^~ /.well-known/acme-challenge/ {
        root /var/www/vhosts/default/htdocs;

        types { }
        default_type text/plain;

        satisfy any;
        auth_basic off;
        allow all;

        location ~ ^/\.well-known/acme-challenge.*/\. {
            deny all;
        }
    }
    #extension letsencrypt end

    location / {
        proxy_pass https://00.000.00.00:7081;
        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-Accel-Internal /internal-nginx-static-location;
        access_log off;

    }

    location /internal-nginx-static-location/ {
        alias /var/www/vhosts/example.com/httpdocs/;
        internal;
    }

    location ~ ^/(plesk-stat|awstats-icon|webstat|webstat-ssl|ftpstat|anon_ftpstat) {
        proxy_pass https://00.000.00.00:7081;
        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-Accel-Internal /internal-nginx-static-location;
        access_log off;

    }

    location ~ "^/files/" {
        proxy_pass https://00.000.00.00:7081;
        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-Accel-Internal /internal-nginx-static-location;
        access_log off;

    }

    add_header X-Powered-By PleskLin;

    include "/var/www/vhosts/system/example.com/conf/vhost_nginx.conf";
}

server {
    listen 00.000.00.00:80;

    server_name example.com;
    server_name www.example.com;
    server_name ipv4.example.com;

    client_max_body_size 128m;

    proxy_read_timeout 300;

    if ($host ~* ^superglass\.de$) {
        rewrite ^(.*)$ https://www.example.com$1 permanent;
    }

    return 301 https://$host$request_uri;
}

In „var/www/...“ ist eine weitere Datei enthalten, die leer ist. Wahrscheinlich sollte ich meine Sachen dort hinzufügen.

Antwort1

Vergessen Sie die Standorteinstellung unter „Zusätzliche Nginx-Richtlinien“. Scrollen Sie auf der Plesk-Seite „Apache- und Nginx-Einstellungen“ nach oben zum Abschnitt „Zugriff auf die Site verweigern“. Dort können Sie einfach Ihre IP-Adressen oder IP-Adressbereiche eingeben, die Sie „erlauben“ oder „verweigern“ möchten, und Plesk wird dies für Sie korrekt handhaben, unabhängig davon, ob Sie den Nur-Nginx- oder den Proxy-Modus verwenden.

verwandte Informationen