nginx 游乐场
这段代码运行在 nginx-playground.wizardzines.com。 有一篇博客文章解释了设计理念。
基本不再维护
我已经几年没有对这段代码做任何更改,也不打算添加新功能。
不过我愿意合并错误修复,如果你发现了bug,我希望你能在issues中提出。
你可能想要更改的内容
以下是一些特定于我部署此代码的内容,如果你要做重大更改,你会想要删除或更改这些内容:
- 页眉中的"a wizard zines project"
- 分析工具(搜索"plausible")
fly.toml
文件- FAQ部分
安全注意事项
可能存在安全漏洞,它给予用户很多访问权限,我个人只会在可能被攻破也不要紧的机器上运行这个软件。不过到目前为止,我还没有遇到任何已知的问题。
我将后端和前端运行在不同的服务器上,这样即使后端被攻破,也不会影响前端网站。你可以直接在GitHub Pages或类似平台上运行前端。
开发设置
开发前端很简单:
cd static
python3 -m http.server 8084 # 或者用任何你喜欢的方式启动一个网络服务器
它硬编码了后端的URL,所以我可以在不运行后端的情况下进行开发。
生成Tailwind CSS:(使用tailwind独立CLI)
tailwindcss-macos-arm64 --content 'static/*.html,static/*.js' -o static/css/tailwind-classes.css
开发后端有点麻烦。它只能在Linux上运行(因为依赖bubblewrap),而且开发起来很痛苦,因为它要求nginx安装在特定目录下,并且必须以root身份运行。
以下是我在全新的Ubuntu 22.10安装上成功使用的设置说明:
sudo apt-get install golang nginx bubblewrap
# 安装go-httpbin
go install github.com/mccutchen/go-httpbin/v2/cmd/go-httpbin@latest
# 仅将go-httpbin放入PATH是不够的
cp /go-httpbin的路径 /usr/bin
# 必须有一个nginx用户
useradd -s /bin/false nginx
# 启动服务器
bash scripts/run-local.sh
你可以用httpie
测试它是否正常工作:
http post localhost:8080/run nginx_config=@examples/basic.conf command="http get localhost"
还有一个watch-local.sh
脚本,它使用entr
监视你的更改。
理论上应该可以修改bubblewrap
的调用方式,使其无需root权限运行(并获得不那么可怕的开发体验),但我没能弄明白如何做到。如果你找到了让使用bubblewrap变得更容易的方法,我很乐意听听。
另外,你肯定可以修改这个项目,使其使用单独的nginx容器镜像,而不需要在主文件系统中安装nginx。