將 NGINX 網站遷移到 ServBay 的 Caddy 伺服器
ServBay 是一套功能強大的本地 Web 開發環境,整合了多款主流 Web 伺服器,包括 Caddy、NGINX 與 Apache。ServBay 為這些伺服器—特別是 Caddy 與 NGINX—預先配置了常見的 URL Rewrite 規則,大幅降低開發者的配置負擔。
本文提供詳細指南,說明如何將您現有的 NGINX 網站無縫遷移到 ServBay 內建的 Caddy 伺服器。我們將以熱門 PHP 框架 Laravel 與內容管理系統 WordPress 為例,帶您完整體驗遷移流程。
ServBay 對 Web 伺服器的全面支援
ServBay 完整支援 Caddy、NGINX 及 Apache,您可根據專案需求彈性切換預設 Web 伺服器。詳情請參閱 如何切換預設 Web 伺服器。
概述
將網站從一個 Web 伺服器轉移到另一個牽涉到對配置檔以及網站檔案的搬移。在 ServBay 中,遷移至 Caddy 的程序極為簡便。針對大多數 PHP 框架與 CMS(如 Laravel、WordPress、Symfony、CodeIgniter、Drupal、Joomla 等),ServBay 已提供開箱即用的支援,通常無須手動撰寫或修改 Caddy 配置檔。ServBay 會根據您在 GUI 裡設定的網站資訊,自動產生對應的 Caddyfile。
遷移前準備
在進行任何遷移操作前,請務必做好下列準備事項:
- 備份網站檔案: 完整備份網站根目錄下的所有檔案與資料夾。
- 備份資料庫: 備份網站所用的資料庫(例如 MySQL、PostgreSQL、MongoDB 等)。ServBay 內建資料庫管理工具,也支援手動備份。
- 安裝 ServBay: 確保您已在 macOS 系統上成功安裝並啟動 ServBay。
- 確認檔案位置: 請將您的網站檔案放置於 ServBay 預設的網站根目錄
/Applications/ServBay/www
或其子目錄中。例如,若您的專案名稱為myproject
,請存放於/Applications/ServBay/www/myproject
。
ServBay 中 Caddy 的運作方式
了解 ServBay 如何管理 Caddy 配置對遷移相當關鍵。不同於手動維護 Caddyfile,ServBay 借助圖形介面(GUI),讓您輕鬆新增與設定網站。在您新增網站並選定 Caddy 為 Web 伺服器時,ServBay 會根據您指定的網域、網站根目錄、PHP 版本等資訊,自動產生與管理 Caddyfile 片段。這些片段會被 ServBay 的主 Caddyfile 引用,實現網站的正常運作。
換句話說,只要透過 ServBay GUI 新增網站,Caddy 配置就自動完成,無需手動編輯 .caddyfile
或其他類似文字檔案。
遷移步驟
將 NGINX 網站搬遷至 ServBay 的 Caddy 伺服器步驟簡明:
- 啟動 ServBay: 確認 ServBay 應用程式已經運行中。
- 準備網站檔案: 將您的 NGINX 網站檔案(包含應用程式碼、圖片、CSS、JS 等)複製或移動至 ServBay 網站根目錄下一個新資料夾,例如
/Applications/ServBay/www/your-site-name
。 - 透過 ServBay GUI 新增網站:
- 打開 ServBay 應用程式。
- 前往「網站」(Websites)區塊。
- 點擊「新增網站」按鈕。
- 輸入網站資訊:
- 網域 (Domain): 請填寫你希望本機訪問的網域名稱,例如
your-site-name.servbay.demo
。 - 網站根目錄 (Website Root): 選擇你於第 2 步放置網站檔案的目錄,例如
/Applications/ServBay/www/your-site-name
。 - Web 伺服器 (Web Server): 選擇
Caddy
。 - PHP 版本 (PHP Version): 選擇網站所需的 PHP 版本。
- 網域 (Domain): 請填寫你希望本機訪問的網域名稱,例如
- 點擊「儲存」或「建立」。
- 驗證網站: ServBay 會自動將新網域加到您的本機 hosts 檔,並配置 Caddy。在瀏覽器輸入設定好的本地域名(如
http://your-site-name.servbay.demo
)檢查網站是否正常載入。 - 設定資料庫: 若您的網站需要資料庫,請確保 ServBay 對應的資料庫服務(如 MySQL、PostgreSQL)已開啟,並於網站設定檔裡更新資料庫連線資訊(資料庫主機通常為
127.0.0.1
或localhost
,請確認正確的帳號密碼)。
範例:遷移 Laravel 網站
典型的 NGINX 配置(僅供參考)
以下為一份用於 Laravel 網站的典型 NGINX 配置檔,展現如何於 NGINX 中設置根目錄、入口檔案 (index.php
) 及 PHP FastCGI 處理:
server {
listen 80;
server_name laravel.servbay.demo; # 使用 ServBay 品牌範例網域
root /Applications/ServBay/www/laravel/public; # 指向 Laravel 的 public 目錄
index index.php index.html index.htm;
location / {
# 嘗試讀取檔案或資料夾,不存在則 rewrite 至 index.php
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
# 配置 PHP FastCGI 處理
include fastcgi_params;
# ServBay 預設 PHP-CGI socket 路徑
fastcgi_pass unix:/Applications/ServBay/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
# 阻擋存取隱藏檔案
deny all;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ServBay 對應 Caddy 配置(自動產生,無須手動撰寫)
無須手動設定 Caddyfile
在 ServBay 中,無須手動建立或編輯 Caddyfile 來實現上述功能。ServBay GUI 會依據您新增網站時的設定自動產生所需 Caddy 設定。以下 Caddy 配置僅說明 ServBay 內部如何對應 NGINX 相似設定,助您理解其運作原理。
下方是 ServBay 理論上為上述 Laravel 網站自動生成的 Caddy 配置片段(簡化版,實際生成內容可能更豐富以涵蓋更多功能):
# 此配置由 ServBay 自動管理
laravel.servbay.demo {
# 指定網站根目錄
root * /Applications/ServBay/www/laravel/public
# 配置 PHP FastCGI 處理,連接 ServBay 的 PHP-CGI socket
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# 啟用檔案服務
file_server
# 定義非靜態檔案的匹配器
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
# 將非靜態檔案 rewrite 至 index.php
rewrite @notStatic /index.php
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
實際遷移 Laravel 步驟:
- 將 Laravel 專案檔案複製至
/Applications/ServBay/www/laravel
。 - 確保
laravel/public
目錄為網站入口。 - 於 ServBay GUI 新增新網站:網域
laravel.servbay.demo
,根目錄/Applications/ServBay/www/laravel/public
,Web 伺服器選擇Caddy
。 - 在 Laravel 的
.env
檔中設定正確資料庫連線資訊。 - 於瀏覽器訪問
http://laravel.servbay.demo
測試運作狀況。
範例:遷移 WordPress 網站
典型的 NGINX 配置(僅供參考)
以下為一份用於 WordPress 網站的標準 NGINX 配置檔:
server {
listen 80;
server_name wordpress.servbay.demo; # 使用 ServBay 品牌範例網域
root /Applications/ServBay/www/wordpress; # 指向 WordPress 安裝目錄
index index.php index.html index.htm;
location / {
# WordPress 的固定連結規則
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
# 配置 PHP FastCGI 處理
include fastcgi_params;
# ServBay 預設 PHP-CGI socket 路徑
fastcgi_pass unix:/Applications/ServBay/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
# 阻擋存取隱藏檔案
deny all;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ServBay 對應 Caddy 配置(自動產生,無須手動撰寫)
無須手動設定 Caddyfile
同理,對於 WordPress,ServBay GUI 會全自動管理 Caddy 配置。下方範例僅用於說明 ServBay 如何支援 WordPress 固定連結等功能。
以下為 ServBay 理論上自動生成的 WordPress Caddy 配置片段:
# 此配置由 ServBay 自動管理
wordpress.servbay.demo {
# 指定網站根目錄
root * /Applications/ServBay/www/wordpress
# 配置 PHP FastCGI 處理
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# 啟用檔案服務
file_server
# 定義非靜態檔案的匹配器
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
# 實現固定連結:將非靜態檔案 rewrite 至 index.php
rewrite @notStatic /index.php
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
實際遷移 WordPress 步驟:
- 將 WordPress 檔案複製至
/Applications/ServBay/www/wordpress
。 - 於 ServBay GUI 新增新網站:網域
wordpress.servbay.demo
,網站根目錄/Applications/ServBay/www/wordpress
,Web 伺服器選擇Caddy
。 - 在 WordPress 的
wp-config.php
設定正確資料庫連線。 - 前往
http://wordpress.servbay.demo
驗證。若遇固定連結問題,ServBay 已自動處理 Rewrite 規則,通常無須額外配置。請在 WordPress 後台「設定」→「固定連結」確認設置。
注意事項
- 資料庫連線: 遷移完成後,請記得更新網站程式碼中的資料庫設定,確保正確連接 ServBay 運行中的資料庫服務。
- 環境變數: 若應用依賴特定環境變數,請確保於 ServBay 環境中設定(可透過 PHP
.env
檔或 ServBay 配置方式)。 - 複雜的 NGINX 配置: 本文例子針對常見的 Laravel 與 WordPress 部署。若您的 NGINX 配置包含複雜的自定規則、特殊模組或非主流設定,ServBay 自動化配置可能無法完全涵蓋,建議查閱 Caddy 官方文件,並透過 ServBay 的 Caddy 配置擴展(若有提供)或理解自動生成邏輯進行客製化。但絕大多數標準應用,ServBay 自動配置已足夠。
- HTTPS/SSL: ServBay 支援本機 HTTPS 網站,可直接利用 ServBay User CA 或 Public CA 產生與信任本地 SSL 憑證,無須自行設定 Caddy 的 TLS 指令。
總結
將 NGINX 網站遷移到 ServBay 的 Caddy 伺服器是極為簡化的流程,全賴 ServBay 對 Caddy 配置的自動管理。針對 Laravel、WordPress 等主流應用,您只需將網站檔案置於指定目錄,並透過 ServBay GUI 新增網站即可。ServBay 會自動完成 URL Rewrite、PHP FastCGI 等設定,讓您能立即在本地環境以 Caddy 伺服器運行網站。