在FreeBSD Jail中运行Nginx

阿里云租用了FreeBSD虚拟机,通过 在UFS文件系统上构建Thin Jail 构建了 FreeBSD Thin(薄) Jail ,开始部署一个 Nginx反向代理 :

准备工作

  • web jail中安装 nginx-lite (轻量级版本,不包含完整的第三方模块,但是对于静态文件和反向代理功能已经足够):

web jail中安装 nginx-lite
pkg -j web install nginx-lite
  • 默认配置文件位于 /usr/local/etc/nginx ,该目录我移动到 /docs 目录下( 在UFS文件系统上构建Thin Jail 中是一个Host主机映射进Jail的目录),以下命令在 web jail中执行:

移动nginx配置目录
mv /usr/local/etc/nginx /docs/nginx
ln -s /docs/nginx /usr/local/etc/nginx

上述步骤将配置分离到独立的 /docs 目录,该目录在 在UFS文件系统上构建Thin Jail 中已经配置为Host主机上映射到jail中的目录,方便统一管理和备份。

Let's Encrypt证书

备注

由于大陆对80端口有"备案"要求,所以阿里云默认会重定向80端口到一个要求备案到页面。这会导致默认的 Let's Encrypt certbot HTTP-01 challenge 无法完成。

根据 certbot FAQ: Can I issue a certificate if my webserver doesn't listen on port 80? 可以使用 DNS-01TLS-ALPN-01 challenge来避免使用被防火墙阻塞到80端口。不过, certbot 不支持 TLS-ALPN-01 challenge,所以如果继续使用 certbot ,则需要使用 DNS-01 challenge