Nginx Proxy Manager修复笔记
排查Nginx Proxy Manager,反向代理,让网站变成HTTPS
有什么用
排查Nginx Proxy Manager,反向代理,让网站变成HTTPS
实现方法
Nginx Proxy Manager 登录异常
http://192.168.6.116:881/login
11am NPM, 登录失败错误:Bad Gateway
template-db-1 已停止 jc21/mariadb-aria:latest
发现是附属的docker的"/template-db-1" 启动失败
- 修复?
2023-11-03 3:13:28 0 [Note] /usr/bin/mysqld (mysqld 10.4.15-MariaDB) starting as process 1 ...
2023-11-03 3:13:28 0 [ERROR] mysqld: Can't create/write to file '/var/lib/mysql/aria_log_control' (Errcode: 13 "Permission denied")
2023-11-03 3:13:28 0 [ERROR] mysqld: Got error 'Can't create file' when trying to use aria control file '/var/lib/mysql/aria_log_control'
2023-11-03 3:13:28 0 [ERROR] Plugin 'Aria' init function returned error.
2023-11-03 3:13:28 0 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.
2023-11-03 3:13:28 0 [Note] Plugin 'InnoDB' is disabled.
2023-11-03 3:13:28 0 [Note] Plugin 'FEEDBACK' is disabled.
2023-11-03 3:13:28 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
2023-11-03 3:13:28 0 [ERROR] Failed to initialize plugins.
2023-11-03 3:13:28 0 [ERROR] Aborting
可能是从因为Nginx Proxy Manager是通过docker-compose来运行的,断电重启以后,docker无法自动正确地按docker-compose来启动了。
解决办法是
1. 关闭这个两个docker容器(jc21/nginx-proxy-manager:latest 和 jc21/mariadb-aria:latest)
2. SSH去执行
# cd /www/server/panel/data/compose/NginxPorxyManager/template
# docker-compose up -d
这就意味着以后,以后机器重启,都要去手动去执行这docker-compose,有没有更好的解决办法?
解决了docker启动,登录NPM还是提示:Bad Gateway错误
检查了docker ps,依旧Restarting (1) 28 seconds ago template-db-1
2:20pm
Docker 具体错误
1
2
3
4
5
6
7template-db-1 | 2023-11-03 6:20:19 0 [ERROR] Plugin 'Aria' init function returned error.
template-db-1 | 2023-11-03 6:20:19 0 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.
template-db-1 | 2023-11-03 6:20:19 0 [Note] Plugin 'InnoDB' is disabled.
template-db-1 | 2023-11-03 6:20:19 0 [Note] Plugin 'FEEDBACK' is disabled.
template-db-1 | 2023-11-03 6:20:19 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
template-db-1 | 2023-11-03 6:20:19 0 [ERROR] Failed to initialize plugins.
template-db-1 | 2023-11-03 6:20:19 0 [ERROR] Aborting
最后方案:放弃视频‘推荐’的方案,改用默认的sqlite.
4:46pm NPM
改了配置以后,服务都正常了;可是新的配置在UI上没有加载之前的的配置内容。
不配置maradb db section, NPM会自己在保存在./data目录下面一个database.sqlite文件数据库。
5:10pm Cloudflare API token 重新配置
dns_cloudflare_api_token e385e19ce47c207b15bf@@@@@
重新申请证书,用DNS challenge的方式。
接下来,新的反代的就直接去新建就好了(待验证)
》5:17pm
安装目录:/www/server/panel/data/compose/NginxPorxyManager/template
如何编辑artalk的robots.txt
收到Google的邮件(New reason preventing your pages from being indexed)
第二天根据链接里面的indexing report,转到问题的问题;之前还去主站点位置添加的www.carlzeng.com/robots.txt.
原来是报告https://artalk.carlzeng.com:4443/robots.txt 这个页面下的。
在artalk容器以及映射出来的目录找了半天也找不到这个文件,莫非是程序动态生成的(无解了?)
也可能是NPM的反代有这样的设置?
https://www.iots.vip/post/hexo-artalk-comment.html
在BT中,/www/server/phpmyadmin/phpmyadmin_c123@@/目录下,搜索到了robots.txt, 修改内容为:
User-agent: *
Allow: /
继续访问https://artalk.carlzeng.com:4443/robots.txt;仍然无效
尝试修改NPM中关于artalk反代的nginx配置文件,参考博客样式
location =/robots.txt {
default_type text/html;
add_header Content-Type “text/plain; charset=UTF-8”;
return 200 “User-Agent: \nAllow: /“;
}
12:56pm NPM配置好的一个个host,被保存在了debian映射出来的那个目录?
原来都保存在了 docker-compose.yml 的目录下,
/www/server/panel/data/compose/NginxPorxyManager/template/data/nginx/proxy_host#
修改配置nginx问题 root@Debian11:/www/server/panel/data/compose/NginxPorxyManager/template/data/nginx/proxy_host# vi 1.conf
重启NPM docker-compose
root@Debian11:/www/server/panel/data/compose/NginxPorxyManager/template# docker-compose restart验证 https://artalk.carlzeng.com:4443/robots.txt
User-agent: *
Allow:/
Works perfect
灵感来源:
如果需要 Nginx 反向代理, 这里提供一份 Nginx 配置参考
https://zh.wikipedia.org/zh-tw/Robots.txt
Debian 11的一些基础
Debian 11默认是关闭ssh的,如何开启?设置了自动开启,断电重启就无忧
旧方案是:在BT面板中开启SSH开关,然后用carl用户登录进ssh,在su,就可以到root用户下
新的:
算了,为了debian11安全,就不开放ssh了;走面板,或者pve终端的ssh
artalk docker 没有自动重启,如何设置特定的docker自动重启?假设机器死机需要断电重启
手动重启成功
缩短URL之简化4443端口成3端口
尝试在NPM的docker把443映射成4443,同时增加了映射到3(后来发现这个步骤是可选的)
原来仅需要在OP上,把3端口映射给重复的内部端口4443即可。
https://c.carlzeng.com:4443/tv
https://c.carlzeng.com:3/tv
Docker端口映射之一对多的几种情况
- 端口多对一,可行:访问宿主的多个端口可以映射到容器中的同一个端口。
1
# docker run -d -p 9000-9001:9000 tomcat:8.5-jre8
- 多对多的几种情况 9000-9001:9000-9001 可行
1
# docker run -d -p 9000-9001:9000-9001 tomcat:8.5-jre8
NPM弊端?
不知为何本地局域网可访问的http://192.168.6.116:881/ 无法映射代理到外网,来实现npm自己代理自己的目标。
真是奇怪,https://npm.carlzeng.com:4443/ 更可能是NPM自己做了什么设置?无法自己代理自己的web管理服务?
2023年12月初:解决办法:用在线云浏览器Firefox,远程过去访问本地局域网的NPM面板即可
Mamoto面板反代以后无法正常登录,也请使用在线云浏览器Firefox
J4125 pve半死状态
这种状态大约半个月左右出现一次;难受;这次是(已启动13天1小时20分57秒)
现象:
各个设备终端上网正常
画面卡死,无法登录 http://192.168.6.116:881/nginx/proxy
SSH可以到达192.168.6.1
- web到OP也正常
无法连接pve https://192.168.6.2:8006
- This site can’t be reached192.168.6.2 took too long to respond.
SSH无法到达bebian .116的
- kex_exchange_identification: read: Operation timed out
banner exchange: Connection to 192.168.6.116 port 22: Operation timed out
- kex_exchange_identification: read: Operation timed out
metaUI无法正常打开,http://192.168.6.116:9090/#/overview
- This site can’t be reached192.168.6.116 took too long to respond.
-
- This site can’t be reached192.168.6.116 took too long to respond.
IPNAS 无法打开http://192.168.6.203:5000/
- 奇怪的是:用手机可以正常打开;反复测试中
NAS中的docker Aria2 可以正常使用 https://aria2.carlzeng.com:4443/#!/downloading
Debian clash 的 7890无法正常使用
Debian
- artalk 正常
- bt 无法连接web
- dujiaoka正常https://buy.carlzeng.com:4443/
- Yourls正常https://c.carlzeng.com:3/admin/index.php
- Yourls后台可以正常登录查看https://c.carlzeng.com:3/admin/index.php
- metaUI又能正常打开了,http://192.168.6.116:9090/#/overview
- 可是,仍然无法连接到http://192.168.6.116:9091
- NPM无法正常打开http://192.168.6.116:881/nginx/proxy
- Hnet Web首页正常了https://proxy.carlzeng.com:4443/
- 电脑端的statcounter无法打开,可是手机端(在系统中)可以正常查看各种信息
- 奇怪
20231204昨天没有重启,后来自动就恢复了;今天又假死了
1
2nc -vz 192.168.6.116 881
nc: connectx to 192.168.6.116 port 881 (tcp) failed: No route to host
PVE, 以及PVE中的docker debian,NAS都下线了
可是OP还活着,一直充当主路由的工作
稀奇的是手机确可以ping通192.168.6.116;这简直无法理解
手机端也是无法打开NPM的881端口,可是matomo可以正常使用
重启一下MAC电脑,重新测试
重启MAC,链接NPM又正常了!pve又可以链接了; 原来问题的根源不是在J4125;汗,而是在用来发现问题的MAC上,引以为戒。下次核查的时候要多设备核实(才能去硬重启J4125)
无意间点进PVE,不看不知道,一看吓一跳:
原来很可能是pve的磁盘占用 96.69% (104.62 GiB的108.20 GiB)
我不知道/dev/sdb3(在SSD128上面, Reeinno CY128GB S1S3上面)为何就满了?里面放了什么了?
pve存储空间扩容 磁盘大小调整 proxmox6
采取措施(对debian和NAS)
docker volume prune
docker image prune
没招,找了一圈又一圈:没有找到解决办法。
尝试着把Win2008的备份10G的文件删除,PVE的使用率从96.69%降到87.55%。先用吧,观察着debian中docker的安装有没有占用这块128G的SSD盘?
Linux 查看当前开放端口
在K2P的padavan或者openwrt里面都是适用
1 | netstat -nl |
重启docker服务
这是一个类似于把整台软路由重启一样的指令
磁盘占用率97%导致数据库无法写入,应用开始出错。 为什么重启?据说能减轻磁盘占用
1 | root@Debian11:/www/server/panel/data/compose/matomo# du -hs /var/lib/docker/ |
1 | sudo systemctl restart docker |
重启 以后 引导磁盘大小92.47% (45.23 GiB的48.91 GiB)
重启以后,其他的服务都正常重启了,除了:Matomo,ChatgptNextWeb,和Firefox。
1 | 1. docker start chatgpt-next-web |
PVE 如何给docker debian虚拟机分配更多的磁盘空间?
目前是50G 92%的占用率。
防止 Docker 日志塞满硬盘(泪的教训)
/etc/docker/daemon.json
1 | # 增加: |
1 | systemctl restart docker |
无法解决问题,反而让docker无法启动数据库了(因为磁盘已满)
rm -rf /var/log/*
终于找到原因了BT 默认备份功能(默认每天备份panel文件夹下的所有内容)害死我了
采取行动:关闭宝塔面板自动备份功能
1 | cd / |
排查过程
- cd /. 然后 du -sh *
- 这样查找出来www目录占用了35G(不知情)
- du -s /www/* | sort -nr
- 按文件占用大小排序,找出最大的占用空间文件夹: /www/backup
- 清除所有的文件:/www/backup
- 运行bt 选18 关闭面板自动备份功能
这个BT还是更适合方便+初级用户+快速上线,很高心释放出了30G空间。下一步:找BT替换方案。
感谢列表: