NGINX全局拒绝访问所有服务器块的剩余.htaccess文件

lrl1mhuk  于 2023-01-20  发布在  Nginx
关注(0)|答案(1)|浏览(251)

我是切换从apache到nginx和我还没有准备好到删除apache文件如.htaccess
因此,我要拒绝访问它们。
我知道这是怎么回事:location ~ /\.ht { deny all; }
但是如何全局地执行呢?也就是说,一次为所有服务器块(vhost)执行。
我希望将它作为/etc/nginx/nginx.conf主指令下的单个指令,如下所示:

http {
    # STUFF

    server {
        listen 80;
        server_name _;

        # STUFF
        location ~ /\.ht {
            deny all;
        }
    }
}

我尝试了上面的配置并重新加载了nginx,但我仍然能够下载.htaccess文件

oiopk7p5

oiopk7p51#

经过研究和实验。
是的...唯一明显的方法是在每个服务器块中包含一个conf文件。
包含的配置文件内容(可能位于/etc/nginx/default.d/default. conf...由您决定)

location ~ /\.ht {
    deny  all;
}

启用的站点配置文件(可能位于/etc/nginx/sites-enabled/domain.com.conf)

server {
    # STUFF
    include /path/to/included/file.conf
    # (example) include /etc/nginx/default.d/default.conf
}

我并不希望这样做,但它是有效且合乎逻辑的
“default.conf”中的所有指令都应该像任何include一样编码(就好像它与内容内联一样)
换句话说...您不会在default.conf的内容中使用服务器{...},因为它已经包含在服务器块中

相关问题