使用自定义配置添加网站
ServBay 提供了灵活的网站添加方式。除了标准的、由 ServBay 自动管理配置的方式外,还支持“自定义配置”模式。这种模式允许开发者直接编写和管理特定网站的 Web 服务器(Nginx, Caddy, Apache)配置文件,提供了最大的灵活性和控制力,特别适用于需要精细调整、非标准设置或高级功能的开发场景。
自定义配置的意义
选择自定义配置意味着:
- 完全控制: 您可以直接编辑该网站对应的服务器配置片段(如 Nginx 的
server
块,Apache 的VirtualHost
块,或 Caddy 的站点定义)。 - 高级功能: 可以实现标准模式下不易配置的功能,例如复杂的重写规则、特定的代理设置、自定义日志格式、特殊的安全头等。
- 特殊场景: 适用于需要模拟特定生产环境配置、集成特殊模块或进行深度调试的场景。
然而,这也意味着您需要自行负责配置的正确性和安全性,包括 SSL 证书的管理。
添加自定义配置网站的步骤
- 导航至网站: 在 ServBay 左侧菜单中点击
Websites
。 - 添加新网站: 点击网站列表上方的
+
(加号) 按钮。 - 填写基本信息:
- Name: 为您的网站指定一个易于识别的名称(例如:
My Custom Project
)。 - Domain: 输入您希望用于本地访问的域名(例如:
myproject.servbay.demo
)。
- Name: 为您的网站指定一个易于识别的名称(例如:
- 选择 Web 服务器: 从
Web Server
下拉菜单中选择您希望使用的 Web 服务器(Nginx, Caddy, 或 Apache)。这个选择非常重要,因为它决定了后续提供的配置模板类型以及该网站将由哪个服务器软件提供服务。 - 启用自定义配置: 勾选
Custom Configuration
复选框。 - 查看并编辑模板: 勾选后,下方的文本区域将自动填充一个基于您所选 Web 服务器的基础配置模板。这是一个起点,您可以(也通常需要)在此基础上进行修改。
理解和修改配置模板
ServBay 会根据您选择的 Web 服务器(Nginx, Caddy, Apache)提供不同的配置模板。您需要根据实际项目需求修改这些模板。
1. Nginx 自定义配置
如果您选择了 Nginx,ServBay 会提供一个基本的 server
块模板。
模板结构与关键指令:
# 监听端口和协议
listen 443 ssl; # HTTPS
# 绑定的域名
server_name myproject.servbay.demo;
# 网站根目录 (请确保此目录存在)
root /Applications/ServBay/www/myproject.servbay.demo;
# 默认索引文件
index index.php index.html index.htm;
# SSL/TLS 协议和加密套件 (示例)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:ServBay:10m;
ssl_session_tickets off;
# SSL 证书路径 (如果启用了 HTTPS,必须手动指定)
# 【重要】请确保证书文件存在且路径正确
ssl_certificate /Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.crt;
ssl_certificate_key /Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.key;
# 处理 PHP 请求 (示例 PHP 8.3,需根据实际配置调整)
set $php_version '8.3';
include enable-php-fpm-pathinfo.conf;
# 其他配置,如 location 块、重写规则等
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# 访问和错误日志路径 (可选)
# access_log /Applications/ServBay/logs/nginx/myproject.servbay.demo-access.log;
# error_log /Applications/ServBay/logs/nginx/myproject.servbay.demo-error.log;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
修改要点:
- 确认
server_name
与您设置的域名一致。 - 设置正确的
root
目录指向您的项目文件。 - 如果需要 HTTPS,请取消注释或添加
listen 443 ssl;
并务必提供正确的ssl_certificate
和ssl_certificate_key
路径。 - 根据需要添加其他 location 块、重写规则、代理设置等。
2. Caddy 自定义配置
如果您选择了 Caddy,ServBay 会提供一个 Caddyfile 格式的站点定义模板。
模板结构与关键指令:
encode zstd gzip
import set-log myproject.servbay.demo # log 文件名
import canonical-path
# 网站根目录 (请确保此目录存在)
root * /Applications/ServBay/www/myproject.servbay.demo
# 处理 PHP 请求
route {
import php-rewrite-default 8.3 # PHP 版本 8.3
}
# TLS/SSL 设置
# 请指定证书路径
# tls /Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.crt /Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.key
# 启用文件服务器
file_server
# 其他指令,如 reverse_proxy, rewrite, header 等
# ...
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
修改要点:
- 确保顶级域名
myproject.servbay.demo
正确。 - 设置正确的
root
指令指向您的项目文件。 - SSL/TLS: Caddy 默认会尝试为域名自动获取和管理 HTTPS 证书。对于
.servbay.demo
等本地开发域名,这通常不可行。如果您需要 HTTPS,强烈建议使用tls
指令手动指定您已有的证书和密钥文件路径。请确保文件存在且路径正确。 - 根据需要添加其他 Caddy 指令。
3. Apache 自定义配置
如果您选择了 Apache,ServBay 会提供一个 <VirtualHost>
块模板。
模板结构与关键指令:
ServerName myproject.servbay.demo
DocumentRoot "/Applications/ServBay/www/myproject.servbay.demo"
# 开启 SSL 引擎
SSLEngine on
# SSL 证书路径
# 【重要】请确保证书文件存在且路径正确
SSLCertificateFile "/Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.crt"
SSLCertificateKeyFile "/Applications/ServBay/ssl/private/tls-certs/myproject.servbay.demo/myproject.servbay.demo.key"
# 目录权限
<Directory "/Applications/ServBay/www/myproject.servbay.demo">
DirectoryIndex index.php index.html index.htm
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# PHP-FPM 配置 (PHP 8.3)
Define PHP_VERSION 8.3
<FilesMatch \.php$>
SetHandler "proxy:unix:/Applications/ServBay/tmp/php-cgi-${PHP_VERSION}.sock|fcgi://localhost"
</FilesMatch>
# 错误和访问日志 (可选)
ErrorLog "/Applications/ServBay/logs/apache/myproject.servbay.demo-ssl-error_log"
CustomLog "/Applications/ServBay/logs/apache/myproject.servbay.demo-ssl-access_log" common
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
修改要点:
- 确认
ServerName
与您设置的域名一致。 - 设置正确的
DocumentRoot
指向您的项目文件。 - 正确配置
<Directory>
块的权限和选项。 - 根据需要添加其他 Apache 指令,如
RewriteEngine
,ProxyPass
等。
SSL 证书管理【重要】
当您使用自定义配置时,ServBay 不会 自动为您生成 SSL 证书(例如自动创建 ServBay CA 证书或者通过 ACME 协议申请 Let's Encrypt 证书)。
- 您必须自行负责获取或生成 SSL 证书,并将其放置在服务器可以访问的位置。
- 您可以使用 OpenSSL 手动生成自签名证书,或者使用 ServBay 提供的 CA(ServBay User CA 或 ServBay Public CA)来签发本地开发证书。
- 在 Nginx, Caddy, 或 Apache 的自定义配置中,必须正确指定
ssl_certificate
/ssl_certificate_key
(Nginx),tls
(Caddy), 或SSLCertificateFile
/SSLCertificateKeyFile
(Apache) 指令,指向您准备好的证书和私钥文件。 - 如果配置文件中指定了 SSL 相关指令,但对应的证书文件不存在或路径错误,Web 服务器将无法启动或加载该网站的配置,导致网站无法访问,并可能在 ServBay 界面或服务器日志中看到错误信息。
请参考 ServBay 关于 SSL 证书管理 的文档了解如何生成和管理本地开发证书。
Web 服务器绑定
DANGER
一个关键点是,当您为一个网站选择了特定的 Web 服务器(例如 Nginx)并使用自定义配置保存后,该网站的配置就与 Nginx 绑定了。
- 这意味着只有当 ServBay 当前激活的 Web 服务器软件包是 Nginx 时,这个网站才能被正确访问。
- 如果您在 ServBay 的
服务
-默认 Web 服务器
部分切换到 Apache 或 Caddy,那么这个基于 Nginx 自定义配置的网站将无法访问,因为它对应的 Nginx 配置不会被加载。 - 反之亦然,为 Caddy 或 Apache 创建的自定义配置网站,也只能在对应的服务器软件包运行时才能访问。
保存与生效
完成所有配置修改后,点击右下角的 Save
按钮。ServBay 会保存您的自定义配置,并尝试重新加载对应的 Web 服务器以使更改生效。如果配置存在语法错误,保存可能会失败,或者服务器重载失败。请检查 ServBay 的通知或对应服务器的错误日志(通常位于 /Applications/ServBay/logs/
下的相应子目录)来排查问题。
总结
使用自定义配置添加网站为 ServBay 用户提供了无与伦比的灵活性,允许开发者精确控制每个站点的服务器行为。但这要求开发者具备相应的 Web 服务器配置知识,并承担起配置正确性、安全性以及 SSL 证书管理的责任。理解模板结构、SSL 要求和服务器绑定机制是成功运用此功能的关键。