V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
auun
V2EX  ›  NGINX

请教一个配置相关问题

  •  
  •   auun · 2022-10-27 00:34:46 +08:00 via iPhone · 1238 次点击
    这是一个创建于 791 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教各位大佬,服务器上有一个文件,我想让他只允许指定 ua 才能下载要怎么设置?

    就是只有指定 ua 可以访问这个文件,使用其他客户端或者浏览器访问就报错

    请求 URL: https://域名 /文件名.conf

    文件存放在:/www/wwwroot/test 目录下

    完整路径:/www/wwwroot/test/文件名.conf

    具体效果

    只有 ua 中包涵关键词,才能访问,否则报 404

    我没用过 nginx ,所以不会搞,麻烦大佬帮帮忙

    auun
        1
    auun  
    OP
       2022-10-27 00:50:36 +08:00 via iPhone
    补充:我在搜索引擎上找了好久都没找到解决方案
    wdssmq
        2
    wdssmq  
       2022-10-27 08:43:33 +08:00
    Nginx 限制 ua - 搜索
    https://cn.bing.com/search?q=Nginx+%E9%99%90%E5%88%B6+ua

    ↓ 至少在我这里第一条结果就是下边这篇,,(竟然不是 csdn ,不容易)

    nginx 禁止特定 UA 访问 - hjqjk - 博客园
    https://www.cnblogs.com/hjqjk/p/6028775.html

    在程序逻辑上,「禁止」和「仅允许」就是个符号的区别,事实上,,该文也有说怎么设置白名单,,

    ---

    补充:

    观察一阵子后,发现还有禁止 UA 为空的访问和放行内网 ip 不做禁止的需求。

    nginx 的配置中不支持 if 条件的逻辑与、逻辑或运算 ,并且不支持 if 的嵌套语法,但我们可以使用变量达到想要的效果。


    # 白名单:192.168.1
    # 禁止特定 UA 和 UA 为空的访问

    set $flag 0;

    if ($remote_addr !~ "^(192.168.1)"){
    set $flag "${flag}1";
    }

    if ($http_user_agent ~ "Lua|^$"){
    set $flag "${flag}2";
    }

    if ($flag = "012"){
    return 403;
    }

    -----

    「知识」领域内,很多东西真的能用搜索引擎找到并且是免费的,,如果你是不懂怎么将「知识」化为己用,这边建议付费。。

    QQ 及验证:UVHvvJozNDk0Njc2MjQg6aqM6K+B562U5qGI77yaMTg5NTc0Njgz

    下边是我研究过的类似需求

    「笔记」.htaccess 及 nginx.conf 可用变量一览_电脑网络_沉冰浮水
    https://www.wdssmq.com/post/20220301043.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5647 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 06:38 · PVG 14:38 · LAX 22:38 · JFK 01:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.