Nginx 阻止访问 php 个文件
Nginx block access to php files
我创建了一个简单的 php 文件来显示从我的 MYSQL 数据库中获取的信息。在那之后,我在 Nginx 中使用重写规则使 link seo 友好并屏蔽获取它的 .php 文件。
例如:http://localhost/myfile.php?seo=how-to-install-linux
重写规则后,我可以像这样访问它:
http://localhost/how-to-install-linux
我的重写规则是:
location / {
rewrite ^/([a-zA-Z0-9_$\-]+)$ /myfile.php?seo= last;
rewrite ^/(.*)/$ / permanent; <- just to block trailing slash
}
我的问题是我还想阻止对我的 php 文件的任何直接访问,我只希望 seo 友好 url 工作。
location = /myfile.php {
deny all;
}
此规则阻止对我的 php 文件的完全访问,包括通过 seo friendy url。
有没有办法让它适用于使用 NGINX 的 seo 友好版本?
我的其他设置是:
location ~ \.php$ {
try_files $uri =404;
include fcgi.conf;
fastcgi_pass unix:/var/run/ajenti-v-php7.0-fcgi-drnou-php7.0-fcgi-0.sock;
}
我只使用Nginx,没有安装Apache。
您可以使用 internal
指令来防止直接访问某个位置。有关详细信息,请参阅 this document。
例如:
location = /myfile.php {
internal;
include fcgi.conf;
fastcgi_pass unix:/var/run/ajenti-v-php7.0-fcgi-drnou-php7.0-fcgi-0.sock;
}
我创建了一个简单的 php 文件来显示从我的 MYSQL 数据库中获取的信息。在那之后,我在 Nginx 中使用重写规则使 link seo 友好并屏蔽获取它的 .php 文件。
例如:http://localhost/myfile.php?seo=how-to-install-linux
重写规则后,我可以像这样访问它:
http://localhost/how-to-install-linux
我的重写规则是:
location / {
rewrite ^/([a-zA-Z0-9_$\-]+)$ /myfile.php?seo= last;
rewrite ^/(.*)/$ / permanent; <- just to block trailing slash
}
我的问题是我还想阻止对我的 php 文件的任何直接访问,我只希望 seo 友好 url 工作。
location = /myfile.php {
deny all;
}
此规则阻止对我的 php 文件的完全访问,包括通过 seo friendy url。 有没有办法让它适用于使用 NGINX 的 seo 友好版本? 我的其他设置是:
location ~ \.php$ {
try_files $uri =404;
include fcgi.conf;
fastcgi_pass unix:/var/run/ajenti-v-php7.0-fcgi-drnou-php7.0-fcgi-0.sock;
}
我只使用Nginx,没有安装Apache。
您可以使用 internal
指令来防止直接访问某个位置。有关详细信息,请参阅 this document。
例如:
location = /myfile.php {
internal;
include fcgi.conf;
fastcgi_pass unix:/var/run/ajenti-v-php7.0-fcgi-drnou-php7.0-fcgi-0.sock;
}