最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
生产环境中 Nginx 如何配置多 Virtual Host
时间:2026-09-03 07:54:49 编辑:袖梨 来源:一聚教程网
生产环境中Nginx多Virtual Host推荐基于域名的name-based方式,共用80/443端口,通过server_name匹配Host头;需按站点拆分配置、根目录权限隔离、代码目录置于Web根外、显式声明listen/server_name/root等关键项,并严格验证语法、DNS及路由命中。
生产环境中配置 Nginx 多 Virtual Host,核心是安全、可维护、可扩展,且不暴露源码。推荐采用基于域名的 name-based 方式,所有站点共用 80/443 端口,通过 server_name 匹配 Host 请求头,这是最主流、最符合真实部署场景的做法。
创建独立站点目录与权限隔离
每个站点应有专属根目录,避免路径交叉和权限越界:
- 统一规划路径,例如
/var/www/example.com/html和/var/www/api.example.com/html - 为每个目录设置明确属主(如
www-data:www-data或专用用户),禁止写入权限开放给 web 用户 - 入口文件(如
index.php)之外的代码目录(如app/、config/)必须放在 Web 根目录外,Nginx 的root只指向公开入口层 - 添加
location ~ .php$块时,确保SCRIPT_FILENAME指向正确的物理路径,避免因路径错误导致源码泄露
按站点拆分配置文件(推荐做法)
不要把所有 server 块堆在 nginx.conf 里,而是按站点单独建配置文件:
- 在
/etc/nginx/conf.d/下新建example.com.conf和admin.example.com.conf - 每个文件只包含一个
server块,开头加注释说明用途、负责人、上线时间 - 主配置中保持
include /etc/nginx/conf.d/*.conf;,便于批量启用/禁用 - 禁用未生效配置时,直接重命名文件(如加
.disabled后缀),比注释更可靠
关键配置项必须显式声明
每个 server 块不能依赖全局默认值,尤其要注意:
-
listen 80;和listen 443 ssl http2;需分开写,HTTPS 必须配证书路径(ssl_certificate、ssl_certificate_key) -
server_name明确列出主域和常用别名,如example.com www.example.com,不建议用通配符泛匹配(除非子域名完全可控) -
root路径结尾不带斜杠;index至少含index.html index.php - 加
access_log /var/log/nginx/example.com.access.log main;和error_log /var/log/nginx/example.com.error.log warn;,便于按站排查
上线前必做的验证动作
配置不是写完就 reload,必须闭环验证:
- 执行
sudo nginx -t检查语法和路径有效性,失败立即修复 - 确认 DNS 已解析到服务器 IP,或临时改本地
/etc/hosts测试(仅限测试环境) - 用
curl -H "Host: example.com" http://服务器IP绕过 DNS 直接测路由是否命中正确 server 块 - 检查响应头中的
Server和X-Powered-By是否已隐藏,避免暴露技术栈
相关文章
- Premiere如何制作胶片式滑动特效 09-03
- 如何关闭360安全卫士的文档保护 09-03
- TPLink TLWR847N 51~53 无线路由器控制小孩上网方法 09-03
- 初探Delphi中的插件编程实用指南 09-03
- xheditor所见即所得文本编辑器(代码高亮显示修改)实用指南 09-03
- TPLink TLWR847N 51~53 无线路由器修改WiFi名称及密码方法 09-03