V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
neos2014
V2EX  ›  程序员

请教: nginx 能否实现网站 B 目录下静态内容单独访问全 404,但是不影响 A 目录的主程序 PHP 对其使用?

  •  
  •   neos2014 · 2023-08-19 14:08:32 +08:00 · 1805 次点击
    这是一个创建于 455 天前的主题,其中的信息可能已经有所发展或是发生改变。

    表达可能有点问题😂 , 大概就是正常对外使用 yuming.com/A/index.php , 但是有部分 js/css/jpg 以及 html 文件实际都在 /B 目录下的, nginx 能否实现: 只允许通过 yuming.com/A/index.php 这样的方式访问,用户手工构建 yuming.com/B/style.css 或者其他 B 目录下的内容,都直接 404 ? 这个思路假如不行( js/css 都得用户前端执行),那么能否将 yuming.com/B/style.css 输出为 fake.com/B/style.css 即 这不是我 yuming.com 加载给你的? 总的大概意思就是你好好按照 yuming.com/A/ 访问,没问题,你跑来猜测我 /B 的静态内容,要么给你 404 要么给你 按 fake.com/B 去给你执行, 谢谢大家😂。

    13 条回复    2023-08-20 14:16:24 +08:00
    owltacklejaguar
        1
    owltacklejaguar  
       2023-08-19 14:28:05 +08:00
    ```
    server {
    listen 80;
    server_name yuming.com;

    location /A/ {
    if ($http_referer !~* "^http://(www\.)?yuming\.com/") {
    return 404;
    }

    # 允许访问 /A/ 下的资源
    # 配置 proxy_pass 到相应的后端服务
    }

    location /B/ {
    return 404;
    }

    # 其他配置...
    }
    ```
    即第二种办法
    owltacklejaguar
        2
    owltacklejaguar  
       2023-08-19 14:32:50 +08:00
    当然 referer 是可以伪造的,静态资源不给正常访问,给 404 有什么意义吗
    justfun
        3
    justfun  
       2023-08-19 15:17:39 +08:00
    只能通过 Referer 判断 但是没有意义 禁止不了的
    klo424
        4
    klo424  
       2023-08-19 15:17:59 +08:00
    不懂就问。php 引入 js 和 css 的方式也是文件引入吧?在浏览器里面的请求会自动寻找 B 吧?那么跟用户手动构建 B 是不是就没有区别了?
    Pastsong
        5
    Pastsong  
       2023-08-19 18:29:52 +08:00
    为了达成什么目的呢
    Pastsong
        6
    Pastsong  
       2023-08-19 18:31:16 +08:00   ❤️ 1
    JS/CSS 地址是 PHP 输出字符串给浏览器,浏览器访问的,不是 PHP 程序加载的
    flyqie
        7
    flyqie  
       2023-08-19 19:12:23 +08:00
    你反正也没开列目录,这么折腾有啥意义吗。。。

    理解不了,绕了一大圈啥用都没有。
    flyqie
        8
    flyqie  
       2023-08-19 19:13:43 +08:00
    @Pastsong #7

    对,全是浏览器加载的,楼主这么玩一点意义都没有。

    没开列目录的话担心猜路径属实有点多余。
    flyqie
        9
    flyqie  
       2023-08-19 19:15:26 +08:00
    @flyqie #8

    感觉楼主要么是绕糊涂了,要么是相关基础知识不扎实。
    flyqie
        10
    flyqie  
       2023-08-19 19:17:17 +08:00
    想了下,你要真不想让用户直接访问的话。。

    可以尝试从 header 头或者一次性防盗链入手,但终究还是没啥实际意义。。
    neos2014
        11
    neos2014  
    OP
       2023-08-20 14:14:07 +08:00
    谢谢大家,说下目的吧:
    1 、就是让真正使用的朋友正常使用
    2 、想窥探目录结构以及静态代码的,返回 404 。不过说实话,静态资源 404 不太可能了似乎😂,那么 我把静态资源重定向到 fake.com/xx00/去怎么样呢? 也就是说,js /css/jpg 挡不住你要看,那就重定向到另外一个域名+目录上,这样干扰对方的判断,我觉得这个也是可行的吧?😂
    neos2014
        12
    neos2014  
    OP
       2023-08-20 14:14:55 +08:00
    @flyqie 嗯 是的 一次性防盗链也是个不错的办法,谢谢大佬
    neos2014
        13
    neos2014  
    OP
       2023-08-20 14:16:24 +08:00
    @owltacklejaguar 谢谢大佬,我也想明白了,不需要非跟静态资源 404 较劲,重定向别的目录干扰结果也应该可行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1191 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:39 · PVG 02:39 · LAX 10:39 · JFK 13:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.