nginx 代理 supervisor WebUI 到子目录
本文最后更新于 1567 天前,其中的信息可能已经有所发展或是发生改变。

nginx 代理 supervisor WebUI 到子目录。supervisor WebUI 开放的地址是在根目录下,直接代理到公网的话会占用根目录,所以推荐将其代理到子目录下。

接上篇 linux进程监管工具Supervisor ,配置后又想远程操控一些硬件、程序的启停。所以搜罗了解了 nginx 代理。

1. 代理

用到的知识有,

  1. nginx 请求参数,参考链接: nginx 配置$Query String
  2. location 匹配,参考链接: Nginx的location详解
  3. rewrite 的 last和 break,参考链接: nginx rewrite 指令last break区别

配置为:

location ~ /chdpath {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host/chdpath/;
    proxy_redirect off;
    rewrite ^/chdpath(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:5555;
}

location ~ /(index\.html|tail\.html) {
    set $param $1;
    if ($query_string ~ "processname.+") {
        # add_header Content-Type text/plain;  # debug
        # return 200 $param;  # debug
        rewrite ^ /chdpath/$param?$1 last;
    }
}

需要修改 chdpath 为自己的子目录,以及 proxy_pass 字段的端口号。

第一部分为反代理 supervisor WebUI,第二部分反代理 supervisor WebUI 根目录的内容到子地址,效果为将 supervisor 原本地址,如 yourhost.com/index.html?processname=A-camera&action=start 经过第二部分代理到 yourhost.com/chdpath/index.html?processname=A-camera&action=start, 再由第一部分传递信息给 supervisor web 后台。

这里解释下第二部分:

  1. location 匹配:
    • ~:区分大小写的正则匹配,匹配成功立即返回结果并结束解析过程
    • /(index\.html|tail\.html):匹配地址 index.htmltail.html,其中 \. 意为将 . 标记为原义字符而非元字符,外层括号表示匹配并获取这一组匹配
  2. set $param $1;$1 是上面匹配并获取的结果,这里其等于 index.htmltail.html,并将此结果赋值给 param。因为后面会再次正则匹配,所以需要赋值给 param 保存起来。
  3. if ($query_string ~ "processname.+"):如果请求参数以 processname 开头就进入函数体,并且将此匹配结果保存到变量 $1
  4. rewrite ^ /chdpath/$param?$1 last;rewrite : 重定向,此处将 ^ (字符串的起始位置,后面跟空表示任意的地址) 定向到 /chdpath/\$param?\$1
    • $param :上面解释 2 中的变量,内容是 location 匹配的结果
    • ? : 去除后面的请求参数
    • $1 : 解释3 中的变量,内容是请求参数匹配结果
    • last : 在 location 内部时,停止当前这个请求,并根据 rewrite 匹配的规则重新发起一个请求。新请求重新开始执行,并匹配到第一部分,让第一部分proxy_pass。这里提下 break 作用是跳过当前请求的 rewrite 阶段,并继续执行本请求的其他阶段,比如第一部分后续的 proxy_pass

2. supervisor Web界面美化

supervisor Web文件在: /usr/local/lib/python3.5/dist-packages/supervisor/ui,主界面文件是: status.html,可以在里面加自己的样式以及其他内容。

有一些第三方的插件,可以集中管理多个设备的 supervisor ,如:cesi, multivisor, supervisord-monitor, flatfish

不过现在都有些不完美(2019年6月17日)。。。要么不支持显示日志(multivisor),要么不支持移动端(supervisord-monitor),要么不支持用户认证(cesi, multivisor),flatfish 算是功能比较全界面也支持多设备,但是功能还没有写完,有很多 bug。 等着他们更新完善把~。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇