在Nginx中使用域名涉及多个配置环节,以下是关键步骤和扩展知识:
1. 域名解析与绑定
确保域名已通过DNS解析指向服务器IP(A记录或CNAME)。通过`dig 域名`或`nslookup 域名`验证解析是否生效。若使用云服务(如阿里云、Cloudflare),需在DNS管理面板添加记录,TTL值影响生效时间(通常300秒以上)。
2. Nginx服务器块配置
在`/etc/nginx/conf.d/`或`/etc/nginx/sites-available/`中创建配置文件,示例:
nginx
server {
listen 80;
server_name example.com www.example.com; # 多个域名用空格分隔
root /var/www/html; # 网站根目录
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
使用`nginx -t`测试语法,`systemctl reload nginx`重载配置。
3. HTTPS支持(SSL证书)
使用Let's Encrypt免费证书:
bash
sudo certbot --nginx -d example.com -d www.example.com
证书自动续期通过`certbot renew --quiet`配置至crontab。Nginx配置会自动添加SSL监听端口443和HTTP到HTTPS的重定向。
4. 多域名与通配符配置
- 多域名:`server_name`列表可包含主域名、子域名(如`app.example.com`)。
- 通配符:`*.example.com`匹配所有子域名,需证书支持通配符(如Let's Encrypt的DNS验证)。
5. 性能与安全优化
- HTTP/2:在SSL配置后添加`listen 443 http2;`提升性能。
- 安全头:增加`add_header X-Frame-Options DENY;`等防止点击劫持。
- 缓存控制:静态资源设置`expires 30d;`减少请求。
6. 反向代理与负载均衡
若域名用于代理后端服务:
nginx
location /api/ {
proxy_pass http://backend-server;
proxy_set_header Host $host;
}
负载均衡需在`upstream`块中定义多个后端服务器,并指定策略(如轮询、权重)。
7. 日志与监控
访问日志默认在`/var/log/nginx/access.log`,可通过`log_format`自定义格式。错误日志用于排查502/504等问题。集成Prometheus或ELK栈可实现可视化监控。
8. 常见问题排查
- 403错误:检查目录权限(`chown -R nginx:nginx /var/www`)和SELinux状态。
- 502错误:后端服务是否运行,防火墙是否放行端口。
- 域名解析失败:确认本地DNS缓存(`ipconfig /flushdns`或`resolvectl flush-caches`)。
9. 动态域名与DDNS
家用网络可使用DDNS服务(如花生壳),配合Nginx动态更新域名解析。需编写脚本调用DNS API或使用`inadyn`等工具。
10. 进阶:Nginx变量与Map模块
通过`map`实现域名动态路由:
nginx
map $host $backend {
default default-backend;
"blog.example.com" wordpress-backend;
}
结合正则匹配可处理复杂路由逻辑。
配置完成后,建议使用SSL Labs测试HTTPS安全性,并利用WebPageTest评估性能。对于高并发场景,需调优`worker_processes`、`keepalive_timeout`等参数。
查看详情
查看详情