我有一个包含 2 个 .htaccess 文件的脚本。第一个 .htaccess 文件位于根目录中,第二个位于根目录下名为 upload 的文件夹中。
然而,我无法弄清楚的是,配置 nginx 以将适当的规则应用于上传文件夹中的 .htaccess 文件的正确方法是什么?
答案1
nginx 不支持.htaccess 文件。
您必须将配置移至 nginx 配置文件夹。
一旦你掌握了它,nginx 语法就相当简单了,而且他们的文档也相当不错。而且很多关于如何在 nginx 中实现 Apache 上特定功能的在线资源。
您可以使用.htaccess -> nginx 转换器类似这个做出所有必要的改变。
然后,不要将其存储在该目录中,而是将其添加到配置中的某个位置下。
假设你有一个 .htaccess 文件/var/sites/example.com/foo
将其转换为 nginx,然后将其存储在/etc/nginx/includes
(或您的 nginx 配置文件夹所在的任何位置)中foo.access
。
然后将其包含在主配置文件中:
server {
listen 80;
server_name example.com;
location /foo {
include includes/foo.access;
}
}
为每个 .htaccess 文件添加一个位置条目。
如果您对配置文件夹的访问权限有限(例如,如果您只能通过 FTP 访问共享服务器下的站点),则可以将与 nginx 兼容的文件放在您的 webroot 中,并要求服务器管理员从 includes 目录中进行软链接:
ln -s /var/sites/example.org/foo.access /etc/nginx/includes/foo.access
因为它们位于 webroot 中,因此可以公开访问,所以您需要将其添加到主配置中:
location ~ (\.access) {
return 403;
}
这样,任何试图访问这些文件的人都将被阻止。