新闻资讯
领先云端方案商,专注云桌面、云手机研发,凭核心虚拟化技术与云端算力,打造安全高效数字化平台,提供全周期支持。
分类
相关文章
热门标签

多站点托管方案mac 本地搭建服务器环境搭建 Nginx Apache 配置参考

2026年6月6日

目标与准备

本文为在 Mac 上实现 多站点托管 的实用参考,覆盖 NginxApache 两种常见服务器、虚拟主机配置、hosts 文件、SSL 本地证书以及常见问题排查。建议先安装 HomebrewPHP(如需多版本)、以及基本命令行工具。

总体思路

在本地通过配置 HTTP 服务器的多个虚拟主机,再配合系统 /etc/hosts 映射不同域名到 127.0.0.1,即可实现多站点共存。若同时运行 NginxApache,可用端口或反向代理实现互不冲突。

安装建议

使用 Homebrew 安装:

brew install nginx
brew install httpd   # Apache
brew install php     # 可指定版本,如 php@7.4

Nginx 多站点配置示例

Nginx 中,每个站点使用 server block。示例将两个站点绑定到不同域名:

server {
    listen 80;
    server_name site1.local;
    root /Users/you/Sites/site1;
    index index.php index.html;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000; # php-fpm
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
server {
    listen 80;
    server_name site2.local;
    root /Users/you/Sites/site2;
    index index.php index.html;
    ...
}

将以上配置放入 /usr/local/etc/nginx/servers//etc/nginx/sites-enabled(取决于安装)。重启 Nginx:nginx -s reloadbrew services restart nginx

Apache 多站点配置示例

Apache 使用 VirtualHost。示例:

<VirtualHost *:80>
    ServerName site1.local
    DocumentRoot "/Users/you/Sites/site1"
    
        AllowOverride All
        Require all granted
    


<VirtualHost *:80>
    ServerName site2.local
    DocumentRoot "/Users/you/Sites/site2"
    ...

配置文件通常放在 /usr/local/etc/httpd/extra/httpd-vhosts.conf,启用并重启 Apache:brew services restart httpd

修改 hosts 文件

本地解析靠 /etc/hosts,添加:

127.0.0.1 site1.local
127.0.0.1 site2.local

保存后通过浏览器访问域名即可。如果 DNS 缓存导致旧解析,执行:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

本地 SSL(HTTPS)配置

开发环境建议使用 mkcert 生成受信任的本地证书:

brew install mkcert
mkcert -install
mkcert site1.local site2.local

生成的证书放到相应站点配置中。Nginx 示例:

server {
    listen 443 ssl;
    server_name site1.local;
    ssl_certificate /path/to/site1.local.pem;
    ssl_certificate_key /path/to/site1.local-key.pem;
    ...
}

端口与反向代理技巧

NginxApache 同机运行,避免端口冲突。常见做法是让 Nginx 作为 反向代理 (listen 80/443),并把部分请求转给 Apache 的后台端口,例如 8080。

location /legacy {
    proxy_pass http://127.0.0.1:8080;
}

或将 Apache 改为监听非标准端口,同时在 Nginx 中代理对应 server_name。

多版本 PHP 与 php-fpm 管理

调试多个项目可能需要不同 PHP 版本。可以通过 Homebrew 并启用对应的 php-fpm 端口或套接字:

php@7.4-fpm -> 127.0.0.1:9074
php@8.1-fpm -> 127.0.0.1:9081

在站点配置中设置 fastcgi_pass 到对应端口以实现版本隔离。

常见故障与排查

1) 若页面返回 403,检查目录权限与 DocumentRoot。2) 无法访问域名,确认 /etc/hosts 是否生效并清缓存。3) SSL 错误,确保证书被系统信任(mkcert 安装)。4) 端口占用,使用 lsof -i :80lsof -i :443 查找占用进程。

推荐实践

为每个项目使用独立的根目录与配置文件,保持配置版本化(例如放在 Git 中)。使用 反向代理 可以将静态资源与动态应用分离。定期清理 unused 服务并记录端口映射,避免冲突。

FAQ

问:本地多个站点都指向同一个项目,如何排查?
答:先确认 /etc/hosts 中是否有重复或通配配置,检查服务器配置的 server_name / ServerName 是否正确匹配。若使用反向代理,核对 proxy_pass 目标是否配置错误。

问:如何在本地为不同站点使用不同 PHP 版本?
答:安装所需的 PHP 版本并启动对应的 php-fpm,为每个版本设置不同的监听端口或套接字,在 Nginx 的 location ~ \.php$ 或 Apache 的 Proxy 指向相应的 php-fpm 地址。


来源:多站点托管方案mac 本地搭建服务器环境搭建 Nginx Apache 配置参考