请问nginx 能否根据 frag 片段 进行路径转发?

HTTP URL的格式复习 ://:@:/;?#frag scheme 协议, 常见的有http, https, file, ftp等 : 用户名和密码 host 主机或者IP port 端口号 path 路径 params 参数 用的比较少 query 查询参数 frag 片段,资源的一部分,浏览器不会把这部分发给服务端 关于frag片段 浏览器加载一个网页,网页可能有很多章节的内容,frag片段可以告诉浏览器,应该将某个特定的点显示在浏览器中。 例如 https://github.com/wangduanduan/jsplumb-chinese-tutorial/blob/master/api/anchors.js#L18 这里的#L8就是一个frag片段, 当浏览器打开这个页面的时,就会跳到对应的行 在网络面板,也可以看到,实际上浏览器发出的请求,也没有带有frag参数 Vue 在Vue中,默认的路由就是这种frag片段。 这种路由只对浏览器有效,并不会发送到服务端。 所以在一个单页应用中,服务端是无法根据URL知道用户访问的是什么页面的。 所以实际上nginx无法根据frag片段进行拦截。 nginx路径拦截 location [modifier] [URI] { ... ... } modifier = 完全匹配 ^~ 正则匹配,并且必须是以特定的URL开头 ~ 正则匹配,且大小写敏感 ~* 正则匹配,大小写不敏感 nginx路径匹配规则 首先使完全匹配,一旦匹配,则匹配结束,进行后续数据处理 完全匹配无法找到,则进行最长URL匹配,类似 ^~ 最长匹配找不到,则按照 ~或者~*的方式匹配 最后按照 / 的默认匹配

2022-07-09 17:13:13 · 1 min · Eddie Wang

windows 上的命令行体验

我已经有5年没有用过windows了,再次在windows上搞开发,发现了windows对于开发者来说,友好了不少。 首先是windows terminal, 这个终端做的还不错。 其次是一些常用的命令,比如说ssh, scp等,都已经默认附带了,不用再安装。 还有包管理工具scoop, 命令行提示工具 oh-my-posh, 以及powershell 7 加载一起,基本可以迁移80%左右的linux上的开发环境。 特别要说明一下scoop, 这个包管理工具,我安装了在linux上常用的一些软件。 包括有以下的软件,而且软件的版本都还蛮新的。 0ad 0.0.25b games 7zip 22.00 main curl 7.84.0_4 main curlie 1.6.9 main diff-so-fancy 1.4.3 main duf 0.8.1 main everything gawk 5.1.1 main git 2.37.0.windows.1 main git-aliases 0.3.5 extras git-chglog 0.15.1 main gzip 1.3.12 main hostctl 1.1.2 main hugo 0.101.0 main jq 1.6 main klogg 22.06.0.1289 extras make 4.3 main neofetch 7.1.0 main neovim 0.7.2 main netcat 1....

2022-07-09 12:43:14 · 1 min · Eddie Wang

powershell oh-my-posh 加载数据太慢

每次打开新的标签页,Powershell 都会输出下面的代码 Loading personal and system profiles took 3566ms. 时间不固定,有时1s到10s都可能有,时间不固定。 这个加载速度是非常慢的。 然后我打开一个非oh-my-posh的窗口,输入 oh-my-posh debug 看到其中几行日志: 2022/07/09 12:20:23 error: HTTPRequest Get "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/v8.15.0/themes/default.omp.json": context deadline exceeded 2022/07/09 12:20:23 HTTPRequest duration: 5.0072715s, args: https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/v8.15.0/themes/default.omp.json 2022/07/09 12:20:23 downloadConfig duration: 5.0072715s, args: https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/v8.15.0/themes/default.omp.json 2022/07/09 12:20:23 resolveConfigPath duration: 5.0072715s, args: 2022/07/09 12:20:23 Init duration: 5.0072715s, args: 好家伙,原来每次启动,oh-my-posh还去github上下载了一个文件。 因为下载文件而拖慢了整个启动过程。 然后在github issue上倒找:https://github.com/JanDeDobbeleer/oh-my-posh/issues/2251 oh-my-posh init pwsh –config ~/default.omp.json 其中关键一点是启动oh-my-posh的时候,如果不用–config配置默认的文件,oh-my-posh就回去下载默认的配置文件。 所以问题就好解决了。 首先下载https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/v8.15.0/themes/default.omp.json 这个文件,然后再保存到用户的家目录里面。 然后打开terminal, 输入: code $profile 前提是你的电脑上要装过vscode, 然后给默认的profile加上–config参数,试了一下,问题解决。 oh-my-posh init pwsh --config ~/default....

2022-07-09 12:31:09 · 1 min · Eddie Wang

windows11 安装 oh my posh

0. 前提条件 系统是windows11 已经安装过powershell 7 安装过vscode编辑器 默认情况下,所有命令均在powershell下执行的 1. 安装 oh my posh 1.2 方式1: 通过代理安装 假如你有socks代理,那么可以用winget安装 打开你的power shell 执行类似下面的命令,来配置代理 $env:all_proxy="socks5://127.0.0.1:1081" 如果没有socks代理,最好不要用winget安装,因为速度太慢。然后执行: winget install JanDeDobbeleer.OhMyPosh -s winget 1.2 方式2: 下载exe,手工安装 再oh-my-posh的release界面 https://github.com/JanDeDobbeleer/oh-my-posh/releases 可以看到很多版本的文件,windows选择install-amd64.exe, 下载完了之后手工点击执行来安装。 https://github.com/JanDeDobbeleer/oh-my-posh/releases/download/v8.13.1/install-amd64.exe 2. 配置 oh-my-posh 在powershell中执行下面的命令,vscode回打开对应的文件。 code $PROFILE 在文件中粘贴如下的内容: oh-my-posh init pwsh | Invoke-Expression 保存文件,然后再次打开windows termial, 输入下面的命令来reload profile . $PROFILE 然后你可以看到终端出现了提示符,有可能有点卡,第一次是有点慢的。但是很多符号可能是乱码,因为是没有配置相关的字体。 3. 字体配置 3.1 安装字体 下载文件 https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Meslo.zip 解压文件 打开设置,在个性化》字体中,将之前下载好的所有字体,拖动到下面的红框中,字体就会自动安装 3.2 windows termial字体配置 用vscode打开对windows termial的配置json文件,在profiles.default.font中配置如下字体 "font": { "face": "MesloLGM NF" } 配置之后,需要重启windows termial...

2022-07-08 13:30:15 · 1 min · Eddie Wang

关于我在闲鱼卖二手这件事

自从我换了新款的惠普战X之后,我的老搭档,2017款的macbook pro, 已经在沙发上躺了很久了。 我拍了拍它的脑袋,对它语重心长的说: 人不能闲着,闲着容易生病,笔记本也是如此。虽然你已经是5年前的mbp了, 但是廉颇老矣,尚能饭否? mbp面无表情,胡子邋遢,朝我瞥了一眼,像是嘲讽,又像是不满,一口气吸掉还剩一点的香烟,有气无力的说:我已经工作五年了,按照国家的法律规定,已经到了退休的年龄,是该享受享受了。 我

2022-07-07 21:34:28 · 1 min · Eddie Wang

最后一篇blog, 是时候说再见了

我最早用过有道,我觉得有道很烂。 后来我开始用印象笔记,我发现印象笔记更烂。不仅界面做的让人觉得侮辱眼睛,即使你开了会员也要看广告。 印象笔记会员被割了韭菜,充到了2026年,但是我最近一两年我基本没有用过印象笔记。 后来我遇到了文档blog界的new school, notion、语雀、飞书, 就完全抛弃了有道和印象笔记的old school。 做任何事情,都需要动机。 写公开博客也是如此。可能有以下原因 提升个人影响力 提高自己的表达能力 知识积累和分享 公开博客需要三方角力,平台方、内容生产者、内容消费者(读者)。 作为内容生产者,我们从选择一个平台是需要很多理由的。可能是UI界面的颜值,可能是一见钟情界面交互。 就像男女的相亲,首先要被外貌吸引,才能有下文。 然而除了那一见钟情的必然是短暂的,除此之外,我发现了另一个重要原因:迁移成本 我以前决定不用印象的时候,印象笔记上还有我将近一千多篇的笔记。虽说印象笔记有导出工具,但是只有当你用的时候,你才能体会导出工具是多坑爹。 假如你一天决定不用这个平台了,你想把所有你产出的内容都迁移出来,你要花费多少成本呢? 很多人都没有考虑过这件事情。 就像温水煮青蛙,只有感觉到烫的时候,青蛙才会准备跳走,但是青蛙还能跳出去吗? 可能他的腿都已经煮熟了吧? 从另外一个方面来说,作为内容生产者,我们要花时间,花精力来写文章,还要花金钱来买平台的会员,然而平台对内容生产者来说,有什么回报呢? 我们只不过是为他人做嫁衣罢了。就像旧时代的长工,只不过在一个大一点的地主家干活了吧。 再见了,语雀。 新的bolg地址: wdd.js.org 我以前没得选,我现在想选择做个自由人

2022-06-30 22:40:56 · 1 min · Eddie Wang

vfs_cache_pressure和min_free_kbytes对cache的影响

环境 kernal Linux 5.15.48-1-MANJARO #1 SMP PREEMPT Thu Jun 16 12:33:56 UTC 2022 x86_64 GNU/Linux docker 20.10.16 初始内存 total used free shared buff/cache available 内存: 30Gi 1.9Gi 19Gi 2.0Mi 9.6Gi 28Gi 交换: 0B 0B 0B 初始配置 sysctl -n vm.min_free_kbytes 67584 sysctl -n vm.vfs_cache_pressure 200 vfs_cache_pressure的对内存的影响 vfs_cache_pressure设置为200, 理论系统倾向于回收内存

2022-06-29 06:57:56 · 1 min · Eddie Wang

manjaro 安装 packettracer

# 将会下载packettracer到当前目录下 yay -G packettracer cd packettracer # Download PacketTracer_731_amd64.deb to this folder makepkg sudo pacman -U packettracer-7.3.1-2-x86_64.pkg.tar.xz 注意,如果下载的packetraacer包不是PacketTracer_731_amd64.deb, 则需要修改PKGBUILD文件中的, souce对应的文件名。 例如我下载的packettracer是Cisco_Packet_Tracer_811_Ubuntu_64bit_cf200f5851.deb source=('local://Cisco_Packet_Tracer_811_Ubuntu_64bit_cf200f5851.deb' 'packettracer.sh') 注意:最新版的packertracer打开后,必须登陆账号才能使用,有点坑。 花费点时间注册了账号后,才能用。 参考 https://forum.manjaro.org/t/how-to-get-cisco-packet-tracer-on-manjaro/25506/5

2022-06-15 18:54:11 · 1 min · Eddie Wang

mysql placeholder的错误使用方式

Error EXTRA *mysql.MySQLError=Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘? ( 然而我仔细看了看sql语句,没有看出来究竟哪里有sql报错。 然而当我把作为placeholder的问号去掉,直接用表的名字,sql是可以直接执行的。我意识到这个可能是和placeholder有关。 搜索了一下,看到一个链接 https://github.com/go-sql-driver/mysql/issues/848 Placeholder can’t be used for table name or column name. It’s MySQL spec. Not bug of this project. 大意是说,placeholder是不能作为表名或者列名的。 在mysql关于prepared文档介绍中,在允许使用prepared的语句里,没有看到create table可以用placeholderhttps://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html prepared语句的优点有以下几个 优化查询速度 防止sql注入 但是也有一些限制 不是所有语句都能用prepared语句。常见的用法应该是作为select where之后的条件,或者INSERT语句之后的值 不支持一个sql中多条查询语句的形式

2022-06-11 23:51:34 · 1 min · Eddie Wang

Hugo博客常见问题以及解决方案

如何在markdown中插入图片 在static 目录中创建 images 目录,然后把图片放到images目录中。 在文章中引用的时候 ![](/images/qianxun.jpeg#center) Warning 我之前创建的文件夹的名字叫做 img, 本地可以正常显示,但是部署之后,就无法显示图片了。 最后我把img改成images才能正常在网页上显示。

2022-05-28 21:08:43 · 1 min · Eddie Wang