「笔记」.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
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

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

相关文章

发表评论:

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

网站分类

搜索

本周旧文

wdssmq/blog-astro: 一个基于 Astro 的静态博客;

本质上,面临一个代码问题时,我们需要的是另一个人愿意为「你」的问题投入精力,并且有相应的技术知识。。

接上一条,Resilio Sync 换 Syncthing 感觉也是略大的工程。。Orz

去年 GoodSync 送了一年授权,然后也确实用上了;本来想着到期就换 Syncthing,结果前几天临期提醒,花 ¥381 续了三年 Orz,两者定位和使用姿势还是有些差别的。。更早是用 Resilio Sync 和 BCompare,但是前者内存占用太高,后者并不是自动同步的定位。。

2024 年了,姑且备份下嘟特存档。。

……,一个不知名的小众样式库 + 内联样式混写这种入坑姿势确实很有槽点,但是,「已经开始学」并且能够持续是绝对值得肯定的。。

在贴吧看过很多提问了,就有种错觉:好多人为了提一个问题专门注册了贴吧,问题本身可能得到有效回答,也可能没有(和提问的点及具体姿势有关。。但无论如何,之后就和注销了账号一样没有然后了,好像之后永远不用学相应的东西一样。。

《恶魔娃娃》

- 他们正研究你究竟是真正的大人,还是伪装成大人的小孩

- 我自己都研究很久了

乐高 DC 里,(基本就蝙蝠侠家,,年龄最小的那个无论是谁感觉人设都会变得一样 - -

所以,就感觉和祥林嫂一样,每天都需要向外「签到」自己的情绪感受,然而又并没有什么「需要」我这样的签到……

爱发电支持者

最新留言

友情链接

  • 订阅本站的 RSS 2.0 新闻聚合
召唤伊斯特瓦尔