GNU/Linux >> Linux Esercitazione >  >> Linux

Imposta nginx.conf per negare tutte le connessioni ad eccezione di determinati file o directory

Il percorso più semplice sarebbe iniziare negando tutti gli accessi, quindi concedendo l'accesso solo alle directory desiderate. Come ha sottolineato ring0, è possibile utilizzare il flag predefinito (default_server in 0.8) sulla direttiva di ascolto. Tuttavia, se disponi già di un server che desideri utilizzare come impostazione predefinita per l'accesso con nome sconosciuto al tuo host, puoi anche rilevare le richieste senza un'intestazione host o con l'indirizzo IP del tuo server con qualcosa di simile a questo (sostituendo 1.2.3.4 con il tuo IP del server:

upstream _php {
  server unix:/var/run/php-fpm/php-fpm.sock;
}

server {
  server_name "" 1.2.3.4;

  root /path/to/root;
  index index.php;

  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

  # deny everything that doesn't match another location
  location / { deny all; }

  # allow loading /index.php
  location = / { } # need to allow GET / to internally redirect to /index.php
  location = /index.php { fastcgi_pass _php; }

  # allow access to phpmyadmin
  location /phpmyadmin/ { } # Allow access to static files in /phpmyadmin/
  location ~ ^/phpmyadmin/.*\.php$ { fastcgi_pass _php; } # phpmyadmin php files
}

fastcgi_params verrà ereditato da entrambe le posizioni che fastcgi_pass e sono consentiti solo /index.php e /phpmyadmin/. Ho anche aggiunto un blocco upstream per php, che rende più facile se dovessi mai doverlo aggiungere o modificare in futuro.


Uso creativo della posizione e regole di negazione negate nella regex, qualcosa del tipo:

    location / {
        root   html;
        index  index.html index.htm index.php;
    }

    location ~* !^/(index.(php|html|htm)$)|(phpmyadmin/) {
        deny all;
    }

    location ~ \.php$ {
        root           html;
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /srv/http/nginx/$fastcgi_script_name;
        include        fastcgi_params;
    }

Non è stato testato, ma hai capito.

http://wiki.nginx.org/HttpAccessModule

http://wiki.nginx.org/HttpCoreModule#location

Inoltre, questo potrebbe aiutarti a scriverlo:

http://www.regextester.com/


Linux
  1. Eliminare tutti i file in una cartella tranne l'ultimo (più recente) 20?

  2. Utilizzo delle variabili di ambiente nei file Tmux.conf?

  3. Come impostare i file zip delle password con il comando in tutti i sistemi operativi?

  4. Come elencare in modo ricorsivo tutti i file e le directory

  5. Sposta tutti i file tranne uno

Come eseguire la ricerca Grep su tutti i file e in tutte le directory

Comando per elencare tutti i file tranne . (punto) e .. (punto punto)

Come impostare i file aperti max nginx?

Negare tutte le connessioni in entrata con iptables?

Come trovare/elencare tutti i file univoci in due directory?

Trova directory contenenti un certo numero di file