你应该点击对应网站的配置按钮
image1872×969 80.6 KB
随后点击配置文件
找到类似下面这行
image1872×969 64.1 KB
如果找不到,你可以按下Ctrl + F打开查找,并输入"Strict-Transport-Security"
image1872×969 66.9 KB
输入内容后点击一下next即可自动定位到该行
请重点观察本行是否有"includeSubdomains; preload"的字样,以及max-age等号后的数字是否大于31536000(1年,但推荐63072000)
如果未来1Panel更新了其他原生兼容的web服务器(而不是ols这样的社区套壳),请参考此文章来做出对应web服务器的配置修改
WordPress启用HSTS,增强用户信任和网站安全性-风屿岛 (biliwind.com)
请首先尝试将CDN、WAF的上游(回源)服务器配置为https地址
image665×695 15 KB
上图为雷池WAF的示例
如果依然不行,请尝试将此处改为“http可直接访问”
image1872×969 64.2 KB
请仔细检查你的网站根目录中是否含有一个叫做“.user.ini”的文件
image1872×969 80.2 KB
image1872×969 66.6 KB
如果有,删除它,因为它可能包含了错误的执行位置限制路径
可以,你可以在服务器上同时安装1Panel和宝塔,也可以在1Panel中安装宝塔,或者在1Panel中安装1Panel
image1872×969 52.1 KB
但这么做的前提是你已经引入了第三方应用商店
因为宝塔虚拟主机使用了LXD技术,这是宝塔所支持的,但1Panel依赖docker,LXD虚拟化中不能运行docker容器化,所以不支持
但雨云的云服务器、游戏云是支持的,因为其使用了KVM技术
可能是由于未使用的docker镜像占据了大量空间
image1872×969 84.1 KB
以上操作可以释放镜像,但当镜像过多时,1Panel有bug
此bug复现方式很简单,当你所在的页面没有状态是“未使用”的镜像时,点击清理镜像会无效
image1872×969 74.7 KB
临时修复方法是寻找其他分页,找到有“未使用”状态的镜像后再次清理即可清理全部未使用镜像
但是此方法可能会删掉你创建的运行环境镜像
此方法多半由于站点是由反向代理访问的,解决方法是不在服务器上生成证书,而是使用第三方服务生成
此操作在宝塔上并不可行,但1Panel可以这样做
如果你的a应用需要PHP80+扩展X,b应用需要PHP80+扩展Y,但扩展X和扩展Y不支持共存,那么你可以使用两个运行环境
你只需要在创建运行环境时修改镜像名即可
image1872×969 56.9 KB
创建完成后的两个运行环境互相独立,互不影响
根据官方文档介绍,如果你要找的PHP扩展不在扩展选择列表中,可以手动输入然后选择第一个
image1872×969 49.9 KB
如扩展“zip”不在此列表中,我可以手动输入zip并选择第一个
image1872×969 54.8 KB
但如果不在PHP扩展列表中,那么需要手动安装
以魔方财务开心版为例,需要安装一个叫做idcsmart.so的扩展,但其并不在官方的扩展列表中,所以我们需要按照正常流程创建完运行环境和网站,并且在容器页面根据镜像名、容器名以及运行时间来判断哪个是刚刚创建的网站的容器
image1872×969 87 KB
假设这个容器就是要增加自定义插件的容器
image1872×969 79.3 KB
首先要点击容器名
image1872×969 82.1 KB
向下拉,复制MergedDir后面引号中的内容
image1872×969 78.7 KB
访问这个目录,分别点进/usr/local/lib/php/extensions目录中,之后打开里面这个no开头的文件夹
image1872×969 54.2 KB
将自定义扩展上传至此目录
image1872×969 64.3 KB
在对应网站的PHP配置文件行末添加一个引用语句即可
image1872×969 59 KB
一般情况下,需要添加的内容为
注意是包含扩展名的全名
也有可能是
注意,此路径需要根据实际进行修改,例如此处可以修改为
之后重启此容器即可
注意,这种方式添加的扩展会在重建容器后丢失
新手可能会问,这是我网站的访问端口吗?我是需要反向代理这个端口吗?
都不是,这是web服务器与PHP通信用的端口,宝塔默认使用套接字连接,所以你压根看不到这个设置,而1Panel使用TCP连接,所以需要这个端口来让PHP与web服务器进行通信
1Panel官方支持且能用的web服务器只有openresty
image1872×969 62.3 KB
虽然官方有ols web服务器,但这东西是从社区搬过来的,并没有做出适配,你需要自己为ols写配置文件、编译lsphp等,1Panel中的任何操作都无法同步进ols中
当然,你可以使用nginx、openresty、tengine等基于nginx(或完全兼容nginx配置文件的web服务器)
首先你需要他们的docker镜像,但是我建议使用dockerfile构建一个并加入lua模块
之后找到openresty的docker容器,点击编辑
image1872×969 85.3 KB
之后选择你刚刚构建好的镜像,点击确认完成替换
image1872×969 88.4 KB
其实某些操作并不需要重建,而是使用update语句
证据:未持久化的数据并没有丢失,且更改生效,并且运行时间也正常(没有几秒前启动等明显的重启痕迹)
这多数出现在PHP网站项目中或任何1Panel的应用中
这是因为1Panel中的所有docker部署的应用都会默认归为一个名为1panel-network的桥网络中
image1872×969 52.4 KB
并且1Panel在创建数据库等容器时指定了host名,所以需要通过mysql:3306,redis:6379来连接,而不是使用127.0.0.1这样的回环IP,因为回环IP只是相对于运行环境所在容器的,并不是相对于主机的,所以无法建立连接
openresty属于一种特殊的应用,它默认是host网络,即与服务器主机共享一个IP地址,但此共享并不是NAT(网络地址转换)共享IP,而是让容器内的进程直接获得与宿主机相同的网络权限,可以直接占用宿主机的网络端口,直接使用宿主机的IP地址,所以在反向代理时可以使用127.0.0.1
这种问题一般出现在某些项目中,原因是项目的验证逻辑认为mysql并不是一个有效的网络地址,而类似127.0.0.1,example.com才是有效的网络地址,我们可以将mysql的ip地址填进去
image1872×969 67.6 KB
找到你的MySQL容器,即可看到此容器在这个桥网络中的内网IP地址,使用此地址连接即可(但不稳定,易受到外界因素干扰,如容器非正常顺序启动)
如果不希望使用此方法,可以将你的应用改为host网络,这样就可以使用127.0.0.1这样的回环IP进行连接(我在赫兹监控上使用的就是这种方法)
你很可能将cron目录填写错了
image1872×969 91.3 KB
这虽然是正确的网站目录,但却是从容器中映射出来的,在容器中执行cron时肯定找不到这个路径
正确的方法是使用cron时选择网站所在的PHP容器,并且使用以下的执行命令
image885×667 16.4 KB