「笔记」.htaccess 及 nginx.conf 可用变量一览

吐槽/反馈/建议:我的咸鱼心  爱发电-@wdssmq

自己搜索能力明明不算低,但是好多东西并不能快速找到还是好纠结;

.htaccess nginx.conf 说明
%{REQUEST_SCHEME} $scheme http /https
%{HTTP_HOST} $host 域名 / ip
%{REQUEST_URI} $request_uri host/ 后边的部分
%{REQUEST_FILENAME} $request_filename 一般情况下好像有 uri 一样?
%{QUERY_STRING} $args 查询字符串(?后边的部分)
%{HTTP_USER_AGENT} $http_user_agent 客户端 UA
%{REMOTE_ADDR} $remote_addr 访问来源 IP

$scheme://$host/%{REQUEST_SCHEME}://%{HTTP_HOST}/可直接拼接出当前网址;


mod_rewrite 参考文档_Apache 中文文档:

https://www.apachehttpd.com/mod/mod_rewrite.html

Htaccess - THE Ultimate .htaccess tutorial with 100's of Examples:

https://www.askapache.com/htaccess/#Htaccess_Variables


一.正则表达式匹配,其中:

  • ~ 为区分大小写匹配;
  • ~* 为不区分大小写匹配;
  • !~!~* 分别为区分大小写不匹配及不区分大小写不匹配;

二.文件及目录匹配,其中:

  • -f!-f 用来判断是否存在文件;
  • -d!-d 用来判断是否存在目录;
  • -e!-e 用来判断是否存在文件或目录;
  • -x!-x 用来判断文件是否可执行;

三.rewrite 指令的最后一项参数为 flag 标记,flag 标记有:

  • last 对重写后的 URI 发起新请求,最终效果取决于新请求能否匹配到另外的规则;「好像相当于 apache 里面的[L]标记」
  • break 当前指令指定的新 URI 既最终结果;
  • redirect 返回 302 临时重定向,浏览器地址会显示跳转后的 URL 地址;
  • permanent 返回 301 永久重定向,浏览器地址会显示跳转后的 URL 地址;

2022 年了我才知道 Nginx 配置里不能直接用「与」「或」运算什么的?

# 用来查看访问的 IP,仅测试用
location ~* ^/ip/[\d-]+ {
    # default_type 不能用在下边 if 内
    default_type    text/plain;
    return 200      "${remote_addr}";
}

# 匹配某个路径
# if ($uri ~* ^/SomePath) {
    # ………………
# }

# -----------------

# 默认为 0
set $pass 0;

# 当任意一个条件符合就将 $pass 设置为 1;
# 相当于「或」运算;

# 判断 UA
if ($http_user_agent ~* Edg/\d+) {
    set $pass 1;
}

# 判断 IP
if ($remote_addr ~* 172.*) {
    set $pass 1;
}

# 不为 1 时拒绝访问
if ($pass != 1) {
    return 403;
}

# -----------------

set $flag 0;

# 要求符合全部条件
# 相当于「与」运算;

# 判断 UA
if ($http_user_agent ~* Edg/\d+) {
    set $flag "${flag}1";
}

# 判断 IP
if ($remote_addr ~* 172.*) {
    set $flag "${flag}1";
}

# 结果不匹配时拒绝访问
if ($flag != "011") {
    return 403;
}


Nginx 实现仅允许搜索引擎或指定 IP 访问:

# 沉冰浮水(wdssmq)
location / {
    set $pass 0;
    # 判断 UA
    if ($http_user_agent ~* (Baiduspider|YisouSpider|360Spider|HaosouSpider|bingbot|Sosospider|Sosoimagespider|Bytespider|Sogou web spider|Sogou inst spider|Sogou News Spider|Sogou Pic Spider|Sogou Video Spider|Googlebot|Googlebot-Image|AdsBot-Google-Mobile)) {
        set $pass 1;
    }
    # 判断 IP
    if ($remote_addr ~* (123.123.123.123|192.168.0.\d+)) {
        set $pass 1;
    }
    # 不为 1 时拒绝访问
    if ($pass != 1) {
        return 403;
    }
    # 伪静态什么的其他规则
}

爱发电

本文标题:《「笔记」.htaccess 及 nginx.conf 可用变量一览》作者:沉冰浮水
原文链接:https://www.wdssmq.com/post/20220301043.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类

  • 订阅本站的 RSS 2.0 新闻聚合

搜索

本周旧文

近期观影记录:超级马里奥,死侍与金刚狼。。

搬家也告一段落,虽然搬过来的东西还得归置,新衣柜虽说已经散俩月味儿了,但还是不想放衣服进去。

要不我每年汇总整理一次??碎雨集_沉冰浮水_第1页

所以,不带这条的话,2024 年目前只发了 13 条嘟????

VSCode 内 git 操作卡住的时候没办法主动取消一直是个痛点,一般都是推送或拉取,今天连提交都卡了。。

又一个夏天过去了,所以今年也没买防水鞋套;然后天凉了,为了应对踢被子买了睡袋,不知道 1.2 米会不会略窄。。

《五至七时的克莱奥》,2018 年 6 月加入列表,21 年 11 月底发现 B 站上线了这部,直到前几天才看完,还是分两次看的。。接下来有五项是 2019 年的,都是电影 —— 略长的待办列表。。

有用程序自动抓取自己带 tag 的嘟,然后按年备份后从线上删除;刚发现去年的数据有备份但是没删线上??和本地数据对比后发现线上的还少一条,Why??

本质上,每个人需要的是「让自己面临的问题得到解决」的能力。。

这又涉及到直接能力和间接能力,,缺乏直接能力很正常,视情况可以通过学习来掌握直接能力,或者「请」有直接能力的人来帮自己解决。。

缺乏间接能力的情况是真没救,尤其是对「这是**我自己**面临的问题」这一前提没有明确认知的人。。

其实,在认知意义上,焦虑时我知道这种情绪对应「焦虑」这个文法词汇,此外还有「压抑」「悲伤」等等,然而「抑郁」其实是个我认知体系外的词,虽然经常一些情绪感受我找不到对应的语言词汇来表述,却也只能将其实表述为「找不到对应的语言词汇来表述」的某些感受。。

爱发电支持者

最新留言

友情链接