Skip to content

Nginx

在本节中,我们将会介绍 Nginx UI 中关于 Nginx 控制命令、日志路径等参数的配置选项。

提示

自 v2.0.0-beta.3 版本起,我们将 nginx_log 配置项改名为 nginx

日志

Nginx 日志对于监控、排查问题和维护您的 Web 服务器至关重要。它们提供了有关服务器性能、用户行为和潜在问题的宝贵见解。

AccessLogPath

  • 类型:string

此选项用于为 Nginx UI 设置 Nginx 访问日志的路径,以便我们在线查看日志内容。

提示

在 v2 版本中,我们会读取 nginx -V 命令的输出,以获取 Nginx 访问日志的默认路径。

如果您需要设置不同的路径,您可以使用此选项。

ErrorLogPath

  • 类型:string

此选项用于为 Nginx UI 设置 Nginx 错误日志的路径,以便我们在线查看日志内容。

提示

在 v2 版本中,我们会读取 nginx -V 命令的输出,以获取 Nginx 错误日志的默认路径。

如果您需要设置不同的路径,您可以使用此选项。

LogDirWhiteList

  • 类型:[]string
  • 版本:>= v2.0.0-beta.36
  • 示例:/var/log/nginx,/var/log/sites

此选项用于为 Nginx UI 设置日志查看器的目录白名单。

警告

出于安全原因,您必须指定存储日志的目录。

只有这些目录中的日志可以在线查看。

服务监控与控制

在本节中,我们将会介绍 Nginx UI 中关于 Nginx 服务的监控和控制命令的配置选项。

ConfigDir

  • 类型:string

此选项用于设置 Nginx 配置文件夹的路径。

在 v2 版本中,我们会读取 nginx -V 命令的输出,以获取 Nginx 配置文件的默认路径。

如果您需要覆盖默认路径,您可以使用此选项。

PIDPath

  • 类型:string

此选项用于设置 Nginx PID 文件的路径。Nginx UI 将通过判断该文件是否存在来判断 Nginx 服务的运行状态。

在 v2 版本中,我们会读取 nginx -V 命令的输出,以获取 Nginx PID 文件的默认路径。

如果您需要覆盖默认路径,您可以使用此选项。

SbinPath

  • 类型:string
  • 版本:>= v2.1.10

此选项用于设置 Nginx 可执行文件的路径。

默认情况下,Nginx UI 会尝试在 $PATH 中查找 Nginx 可执行文件。

如果您需要覆盖默认路径,您可以使用此选项。

TestConfigCmd

  • 类型:string
  • 默认值:nginx -t

此选项用于设置 Nginx 测试配置的命令。

ReloadCmd

  • 类型:string
  • 默认值:nginx -s reload

此选项用于设置 Nginx 重新加载配置的命令。

RestartCmd

  • 类型:string

提示

我们建议使用 systemd 管理 Nginx 的用户,将这个值设置为 systemctl restart nginx。 否则,当您在 Nginx UI 中重启 Nginx 后,将无法在 systemctl 中获取 Nginx 的准确状态。

若此选项为空,则 Nginx UI 将使用以下命令关闭 Nginx 服务:

bash
start-stop-daemon --stop --quiet --oknodo --retry=TERM/30/KILL/5 --pidfile $PID

若无法从 nginx -V 中获得 --sbin-path 路径,则 Nginx UI 将使用以下命令启动 Nginx 服务:

bash
nginx

若可以获取到 --sbin-path 路径,则 Nginx UI 将使用以下命令启动 Nginx 服务:

bash
start-stop-daemon --start --quiet --pidfile $PID --exec $SBIN_PATH

通过 SSH 管理宿主机模式

在通过 SSH 管理宿主机模式下,非空的 TestConfigCmdReloadCmdRestartCmd 会以 SSH 用户身份通过 /bin/sh -c 在宿主机上执行。留空时,Nginx UI 会使用宿主机的 nginx 可执行文件进行测试,并通过 systemd 或 launchd 重载或重启。参见 在 Docker 中管理宿主机 Nginx

StubStatusPort

  • 类型:uint
  • 默认值:51820
  • 版本:>= v2.0.0-rc.6

此选项用于设置 Nginx stub status 模块的端口。stub status 模块提供了 Nginx 的基本状态信息,Nginx UI 使用这些信息来监控服务器的性能。

提示

请确保您设置的端口未被其他服务占用。

维护页面

MaintenanceDir

  • 类型:string
  • 默认值:/etc/nginx/maintenance
  • 环境变量:NGINX_UI_NGINX_MAINTENANCE_DIR

此选项用于设置 Nginx UI 读取自定义维护页面模板的目录。若留空,则使用 /etc/nginx/maintenance

MaintenanceTemplate

  • 类型:string
  • 环境变量:NGINX_UI_NGINX_MAINTENANCE_TEMPLATE
  • 示例:maintenance.html

此选项用于为 Nginx UI 维护页面选择自定义 HTML 模板。您可以通过环境变量设置,也可以在 Settings > Nginx 中设置。

此配置只使用文件名,配置值中的路径部分会被忽略。Nginx UI 按以下顺序从维护目录加载模板:

  1. <MaintenanceDir>/<站点名称>.<文件名>,即该站点专属的模板;
  2. <MaintenanceDir>/<文件名>,即所有站点共用的通用模板。

例如当 MaintenanceTemplate=maintenance.html 时,站点 example.com 会优先尝试 /etc/nginx/maintenance/example.com.maintenance.html,匹配不到时降级为 /etc/nginx/maintenance/maintenance.html

如果此选项为空、文件不可读或文件内容为空,Nginx UI 将回退到内置维护页面模板。

对于 Docker 部署,请将宿主机目录挂载到维护目录,并将模板文件放在该目录中:

yaml
services:
  nginx-ui:
    image: uozi/nginx-ui:latest
    volumes:
      - ./maintenance:/etc/nginx/maintenance
    environment:
      - NGINX_UI_NGINX_MAINTENANCE_TEMPLATE=maintenance.html

容器控制

在本节中,我们将会介绍 Nginx UI 中关于控制运行在另一个 Docker 容器中的 Nginx 服务的配置选项。

ContainerName

  • 类型:string
  • 版本:>= v2.0.0-rc.6

此选项用于指定运行 Nginx 的 Docker 容器名称。

如果此选项为空,Nginx UI 将控制本机或当前容器内的 Nginx 服务。

如果此选项不为空,Nginx UI 将控制运行在指定容器中的 Nginx 服务。

提示

如果使用 Nginx UI 官方容器,想要控制另外一个容器里的 Nginx,务必将宿主机内的 docker.sock 映射到 Nginx UI 官方容器中。

例如:-v /var/run/docker.sock:/var/run/docker.sock

Nginx UI 通过自身的文件系统读写 Nginx 配置和日志文件。请将相同的配置和日志目录以相同路径挂载到两个容器中。配置目录在 Nginx UI 容器中必须可写,在 Nginx 容器中可以保持只读。映射 docker.sock 和设置 ContainerName 只会将状态检查和控制命令转发到另一个容器,不会自动共享文件或转发业务流量。

通过 SSH 控制宿主机 Nginx

对于 Nginx UI 运行在 Docker 容器中、而 Nginx 以原生方式安装在宿主机上的部署场景,Nginx UI 提供了第三种控制模式,通过 SSH 执行命令,并使用 SFTP 或绑定挂载进行文件 I/O。该模式支持 Linux systemd 服务和 macOS Homebrew launchd 服务。

限制

限制

  • 仅限同一宿主机:Nginx UI 容器与目标 nginx 进程必须在同一台物理机或虚拟机上。如需多主机管理,请参阅 使用集群节点管理多主机 Nginx
  • Linux 上的 nginx 必须由 systemd 管理,并允许 SSH 用户通过免密码 sudo -n 调用一组受限命令。
  • macOS 上的 nginx 必须作为 Homebrew 用户服务运行;SSH 用户必须是拥有 homebrew.mxcl.nginx 的登录用户,并且不会使用 sudo。

快速开始

  1. 在 Web 界面中,前往偏好设置 → Nginx,选择通过 SSH 控制宿主机模式,并打开配置向导。
  2. 按照五步配置向导操作(SSH 目标信任与测试检测平台访问与安装验证):选择或生成密钥对、信任主机密钥并测试连接、检测服务管理器和 nginx 路径、选择文件访问模式并应用生成的容器与宿主机片段,然后执行验证。
  3. 所有检查通过后,保存配置。

也可以使用命令行:

bash
nginx-ui host-setup print --host-address host.docker.internal:22 --host-user nginxui --access-mode sftp
nginx-ui host-setup test

配置字段

字段描述
host_mode设置为 ssh 以启用此模式
host_access_modesftpmounted。SSH 模式下必填:容器通过 SFTP 还是通过 bind mount 访问宿主机 nginx 文件
host_key_sourcegenerated(默认)、existingprovided:SSH 私钥的来源
host_address远程 host:port
host_user宿主机上的 SSH 用户
host_private_key_path容器内的私钥路径
host_known_hosts_path容器内的 known_hosts 允许列表路径
host_sudo_prefix特权命令前缀。默认值为 sudo -n
host_service_managersystemd(默认)或 launchd
host_systemd_unit_name默认为 nginx.service
host_systemctl_path默认为 /bin/systemctl
host_launchd_service默认为 homebrew.mxcl.nginx
host_launchctl_path默认为 /bin/launchctl
host_config_dir宿主机侧 nginx 配置目录
host_log_dir宿主机侧 nginx 日志目录
sbin_pathSSH 模式下可选:宿主机上的 nginx 可执行文件。留空时,Nginx UI 会解析服务管理器的默认值(systemd 为 /usr/sbin/nginx,launchd 为 /opt/homebrew/opt/nginx/bin/nginx),并在保存控制设置时写入。生成的 sudoers 允许列表会精确匹配解析后的路径

另请参阅:在 Docker 中管理宿主机 Nginx使用集群节点管理多主机 Nginx

Released under the AGPL-3.0 License. (6e55a749)