Nginx配置只允许用户访问某些特定类型格式资源、隐藏版本号信息【测试成功】

艺帆风顺 发布于 2025-04-03 24 次阅读


研发提出了一个需求,只允许用户访问以.php或.html结尾的文件,其他文件不允许访问,以免造成里面的一些配置文件信息泄露。

查找了相关信息,可以做如下配置:

    server { location / { if ($uri !~* .(php|html|htm)$) { return 403; } }}

    $uri: 请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改,$uri不包含主机名,如”/foo/bar.html”。

    如果不允许用户访问css|html|htm格式,则配置文件内容为:

      server { # 用户访问端口,按需修改 listen 19091; server_name localhost; # 前端代码存储位置 root /home/Yinling/app/frontends/dist; location / { if ($uri ~* .(css|html|htm)$) { return 403; } }

      这样设置之后,基本实现了研发的要求。 但是其实还是有一个问题,正常的用户访问是输入网址之后,如果后面没有跟详细的资源路径,浏览器会返回index页面,但是如果有上面的设置,应该是优先级的问题,先进性if判断,直接就会返回403,而不是查找index页面。不过这个虚拟主机指向的是一个接口访问的资源文件夹,所以也能满足要求,如果是网站页面的话,最好还是使用下面的配置:

        location ~* .(ini|cfg|dwt|lbi)$ {  deny all; return 404;}

        这样设置是禁止用户访问某些资源,虽然可能写后缀麻烦一些,不过效果会更好。

        隐藏版本号信息:

        在配置文件http头增加:server_tokens off;

          http { include mime.types; default_type application/octet-stream; sendfile on; server_tokens off; keepalive_timeout 65;   ....   ..... proxy_connect_timeout 1; proxy_send_timeout 30; proxy_read_timeout 60;}

            版权声明:本文内容始发于CSDN>作者:zhangpfly,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。始发链接:https://blog.csdn.net/zhangpfly/article/details/78970419在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,商业转载建议请联系原作者,非商业转载请注明出处。