
数週間前にnginxの実行を開始し、特定のファイル/場所へのアクセスをブロックする必要があります。たとえば、
/wordpress/wp-admin/
/wp-admin/
/test/wp-admin/
/hudson/login
/phpmyadmin/index.php
/mysql/index.php
/myadmin/index.php
/wp-cron.php
/xmlrpc.php
通常、/index.phpではなく、/wp-admin/、/test/wp-admin/、/wordpress/wp-admin/などのすべてのファイルに対する要求をブロックしようとしています。これらのファイル/場所は存在しないため、そのファイル/場所にアクセスする人は誰でもシステムをハッキング/乱用しようとします。
.htaccess
Apacheはこのようなことを防ぐために使用します。 Nginxでブロックする方法は?
現在の会議
server {
listen 80;
root /home/public_html;
index index.php;
server_name domain.com;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
}
答え1
以下の設定では、nginxが404状態の「abuse」URLに応答し、デフォルトのnginx 404ページがnginxで終わる他のすべてのURLを、通常どおりプロキシを介して.php
application / phpエンジンに渡す必要があります。いくつかのモードをテストしましたが、アプリケーションではなくnginxで管理したいすべてのモードをテストする必要があります。/phpmyadmin/index.php
プロキシが通過する正規\.php
表現の優先順位が高いように、URLのこの設定にはいくつかの問題がある可能性があると思いましたが、テストの結果、少なくとも私にとってはうまくいくことがわかりました。
そしてはい、位置ブロックがそんなに多くなければもっといいでしょうが、それをどのように実装するかは想像できませんね。
server {
listen 80;
root /home/public_html;
index index.php;
server_name domain.com;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
# The ^~ means if this prefix pattern matches use this location block
# and don't continue onto the regex location blocks - which would load
# the laravel application
location ^~ /wordpress/wp-admin/ {
return 404;
}
location ^~ /wp-admin/ {
return 404;
}
location ^~ /test/wp-admin/ {
return 404;
}
location ^~ /hudson/login {
return 404;
}
location ^~ /phpmyadmin/index.php {
return 404;
}
location ^~ /mysql/index.php {
return 404;
}
location ^~ /myadmin/index.php {
return 404;
}
location ^~ /wp-cron.php {
return 404;
}
location ^~ /xmlrpc.php {
return 404;
}
}