server { listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 server_name public; root /var/www/public; location = /gameserver/ { root /var/www/public/gameserver; index index.html; if ($request_filename !~* [pk3]$) { rewrite ^ /404.html; } }
}
我是Nginx新手,我已经尝试了几个小时(谷歌和阅读手册),但我不知道如何拒绝所有的文件扩展名,除了.pk3与Nginx。
/ var / www / gameserver /指向一个共享链接,我只想要.pk3的可下载文件。
这将是一个小游戏服务器与朋友一些有趣的,没有涉及金钱。
谢谢你的时间,
维塔利
你可以使用这样的嵌套位置来实现:
location / gameserver / {
root / var / www / public;
index index.html;
location〜\ .pk3 $ {
}
返回403;
}
空的位置块是故意的,因为nginx不支持负的正则expression式匹配。 如果一个文件位于/ gameserver /下方,并以.pk3结尾,则空白位置块匹配,并且请求被授予。 你当然可以在那里添加额外的指令。 如果一个文件位于/ gameserver /下,并且不以.pk3结尾,则内部位置块不匹配,而是执行返回403(禁止访问)。
nginx的一般规则是你想避免“如果”,如果你需要任何forms的path匹配你想依靠(嵌套)的位置块。