GNU/Linux >> Linux の 問題 >  >> Linux

nginx.conf を設定して、特定のファイルまたはディレクトリ以外のすべての接続を拒否します

最も簡単な方法は、最初にすべてのアクセスを拒否してから、必要なディレクトリへのアクセスのみを許可することです。 ring0 が指摘したように、リッスン ディレクティブでデフォルト (0.8 の default_server) フラグを使用できます。ただし、ホストへの未知の名前付きアクセスのデフォルトとして使用するサーバーが既にある場合は、ホストヘッダーなしで、またはサーバーの IP アドレスを使用して、次のようなものでリクエストをキャッチすることもできます (1.2.3.4 をサーバーの IP:

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 は fastcgi_pass の両方の場所に継承され、/index.php と /phpmyadmin/ のみが許可されます。また、php のアップストリーム ブロックも追加しました。これにより、将来追加または変更する必要が生じた場合に簡単になります。


次のような正規表現で否定された場所と拒否ルールの創造的な使用:

    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;
    }

これはテストされていませんが、アイデアはわかります。

http://wiki.nginx.org/HttpAccessModule

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

また、これはあなたがそれを書くのを助けるかもしれません:

http://www.regextester.com/


Linux
  1. すべての OS でコマンドを使用してパスワード Zip ファイルを設定する方法

  2. symlink ディレクトリ内のファイルを含む、ディレクトリ内のすべてのファイルを再帰的に一覧表示する

  3. を除くすべてのファイルを一覧表示するコマンド。 (ドット) と .. (ドット ドット)

  1. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  2. bashスクリプトで最新の3つを除くすべてのファイルを削除します

  3. nginx最大オープンファイルを設定するには?

  1. 検索で特定のサブディレクトリを除くすべてのファイルを削除しますか?

  2. Tmux.confファイルで環境変数を使用していますか?

  3. すべてのファイルとディレクトリを再帰的に一覧表示する方法