如何通过Nginx配置高效管理多个域名,优化网站性能?
- 内容介绍
- 文章标签
- 相关推荐
在多域名环境下使用 Nginx 配置虚拟主机是提高网站性能与管理效率的关键。下面以简洁明了的方式,帮你快速了解从文件结构到性能调整的完整流程。
1️⃣ 常见痛点与解决思路
很多站长在配置多域名时会遇到:
- **配置文件散乱**:所有域名都写在一个大文件里修改时容易出错。
- **重新启动频繁**:每次改完就想重启,但不知道是否真的生效。按理说,
- **性能下降**:没有开启 gzip、缓存等。导致页面加载慢,
- **错误日志难排查**:日志里混杂多个站点信息,一眼看不出是哪一块问题。
下面的步骤将帮助你彻底消除这些痛点。
2️⃣ 目录结构 & 文件拆分
推荐使用 /etc/nginx/sites-available/ 存放每个域名的独立配置,接下来通过软链挂载到 /etc/nginx/sites-enabled/。说起来,这样可以随时启用/禁用某个站点而不影响其他站点。
# 创建目录
sudo mkdir -p /etc/nginx/sites-available
sudo mkdir -p /etc/nginx/sites-enabled
# 为 example.com 创建配置文件
sudo nano /etc/nginx/sites-available/example.com.conf
说到示例,单个域名基本配置
server {
listen 80;server_name example.com www.example.com;其实,root /var/www/example.com;index index.html index.htm;location / {
try_files $uri $uri/ =404;}
}
完成后创建软链:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
说到示例,绑定多个二级域名
server {
listen 80;
server_name sub1.example.com sub2.example.com;其实,root /var/www/example.com;怎么说呢,index index.html index.htm;location / {
try_files $uri $uri/ =404;}
}
从示例来看,301 永久重定向旧域名 → 新域名
server {
listen 80;server_name old-domain.com www.old-domain.com;return 301 https://new-domain.com$request_uri;}
3️⃣ 主配置文件合并引用
Nginx 的主配置文件通常是 /etc/nginx/nginx.conf。在其中添加对所有子站点的引用:
http {
# ...其它全局设置...
include /etc/nginx/sites-enabled/*.conf;# 自动加载所有已启用站点
}
4️⃣ 重载 Nginx 并验证效果
修改完任何配置后先检查语法。再重载服务:
sudo nginx -t && sudo systemctl reload nginx
# 检查日志确认无误:
sudo tail -n 20 /var/log/nginx/error.log
# 用 curl 测试响应:
curl -I http://example.com
curl -I http://old-domain.com
If you see “200 OK” or correct “301 Moved Permanently” response,congratulations—your multi‑domain setup works!
5️⃣ 性能调整小技巧
- Avoid “Server” header disclosure: No one needs to know you’re on Nginx. Add in your http block:
- Caching static assets: You’re losing users when images take too long. Add in server block:
- Zipping responses: Your bandwidth cost is higher than it should be. Add in http block:
- DPI & SSL offloading: If you host behind a load balancer that terminates TLS. Use $http_x_forwarded_proto == https?'https' : 'http',or 娱乐ter yet let LB handle all HTTPS traffic and set Nginx to HTTP only.
6️⃣ 日志管理
为每个站点使用不同日志文件。便于排查:
access_log /var/log/nginx/example_com.access.log combined;error_log /var/log/nginx/example_com.error.log warn;怎么说呢,
7️⃣ 小结 & 常用方法 Checklist
- 每个域名独立 config → sites-available + sites-enabled 链接方式
- 使用 include 在主 config 自动加载
- `nginx -t` + `systemctl reload` 验证无误
- 开启 gzip、expires、cache-control
- 去掉 server_tokens。统一访问方法
- 分离 access/error log 并定期轮转
- 对关键错误使用 `warn` 或更高日志级别
- 使用 `return` 或 `rewrite` 做永久重定向
- 配置 SSL 后确保 HSTS、OCSP Stapling 等安全项
-
对高并发场景考虑 worker_processes 与 worker_connections 调整
`
在多域名环境下使用 Nginx 配置虚拟主机是提高网站性能与管理效率的关键。下面以简洁明了的方式,帮你快速了解从文件结构到性能调整的完整流程。
1️⃣ 常见痛点与解决思路
很多站长在配置多域名时会遇到:
- **配置文件散乱**:所有域名都写在一个大文件里修改时容易出错。
- **重新启动频繁**:每次改完就想重启,但不知道是否真的生效。按理说,
- **性能下降**:没有开启 gzip、缓存等。导致页面加载慢,
- **错误日志难排查**:日志里混杂多个站点信息,一眼看不出是哪一块问题。
下面的步骤将帮助你彻底消除这些痛点。
2️⃣ 目录结构 & 文件拆分
推荐使用 /etc/nginx/sites-available/ 存放每个域名的独立配置,接下来通过软链挂载到 /etc/nginx/sites-enabled/。说起来,这样可以随时启用/禁用某个站点而不影响其他站点。
# 创建目录
sudo mkdir -p /etc/nginx/sites-available
sudo mkdir -p /etc/nginx/sites-enabled
# 为 example.com 创建配置文件
sudo nano /etc/nginx/sites-available/example.com.conf
说到示例,单个域名基本配置
server {
listen 80;server_name example.com www.example.com;其实,root /var/www/example.com;index index.html index.htm;location / {
try_files $uri $uri/ =404;}
}
完成后创建软链:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
说到示例,绑定多个二级域名
server {
listen 80;
server_name sub1.example.com sub2.example.com;其实,root /var/www/example.com;怎么说呢,index index.html index.htm;location / {
try_files $uri $uri/ =404;}
}
从示例来看,301 永久重定向旧域名 → 新域名
server {
listen 80;server_name old-domain.com www.old-domain.com;return 301 https://new-domain.com$request_uri;}
3️⃣ 主配置文件合并引用
Nginx 的主配置文件通常是 /etc/nginx/nginx.conf。在其中添加对所有子站点的引用:
http {
# ...其它全局设置...
include /etc/nginx/sites-enabled/*.conf;# 自动加载所有已启用站点
}
4️⃣ 重载 Nginx 并验证效果
修改完任何配置后先检查语法。再重载服务:
sudo nginx -t && sudo systemctl reload nginx
# 检查日志确认无误:
sudo tail -n 20 /var/log/nginx/error.log
# 用 curl 测试响应:
curl -I http://example.com
curl -I http://old-domain.com
If you see “200 OK” or correct “301 Moved Permanently” response,congratulations—your multi‑domain setup works!
5️⃣ 性能调整小技巧
- Avoid “Server” header disclosure: No one needs to know you’re on Nginx. Add in your http block:
- Caching static assets: You’re losing users when images take too long. Add in server block:
- Zipping responses: Your bandwidth cost is higher than it should be. Add in http block:
- DPI & SSL offloading: If you host behind a load balancer that terminates TLS. Use $http_x_forwarded_proto == https?'https' : 'http',or 娱乐ter yet let LB handle all HTTPS traffic and set Nginx to HTTP only.
6️⃣ 日志管理
为每个站点使用不同日志文件。便于排查:
access_log /var/log/nginx/example_com.access.log combined;error_log /var/log/nginx/example_com.error.log warn;怎么说呢,
7️⃣ 小结 & 常用方法 Checklist
- 每个域名独立 config → sites-available + sites-enabled 链接方式
- 使用 include 在主 config 自动加载
- `nginx -t` + `systemctl reload` 验证无误
- 开启 gzip、expires、cache-control
- 去掉 server_tokens。统一访问方法
- 分离 access/error log 并定期轮转
- 对关键错误使用 `warn` 或更高日志级别
- 使用 `return` 或 `rewrite` 做永久重定向
- 配置 SSL 后确保 HSTS、OCSP Stapling 等安全项
-
对高并发场景考虑 worker_processes 与 worker_connections 调整
`

