服务器测评网
我们一直在努力

linux 多个域名

在Linux服务器环境中管理多个域名是网站运维和部署中的常见需求,无论是企业官网、电商平台还是个人博客,合理配置多域名不仅能提升资源利用率,还能实现业务的高效管理,本文将围绕Linux系统下多域名的部署模式、配置步骤、安全优化及故障排查展开,帮助读者系统掌握相关实践。

linux 多个域名

多域名部署的常见模式

在Linux服务器中托管多个域名,主要有三种实现方式,各有适用场景,第一种是基于IP地址的虚拟主机,即每个域名对应不同的公网IP地址,这种方式早期较为常见,但如今IPv4资源紧张,成本较高,已逐渐被淘汰,第二种是基于端口的虚拟主机,通过不同端口号区分域名,例如example.com:8080test.com:8090,但用户访问时需要手动输入端口号,体验较差,仅适用于内部测试或特定业务场景,第三种是基于主机名的虚拟主机(最常用),通过同一IP地址的不同域名进行区分,用户访问时无需感知端口号,符合日常使用习惯,也是本文重点介绍的方式。

基于主机名的虚拟主机依赖Web服务器的虚拟主机功能,主流的Nginx和Apache均支持通过server_name指令匹配域名,从而实现不同域名的独立配置,如网站根目录、日志文件、SSL证书等均可差异化设置。

以Nginx为例配置多域名虚拟主机

Nginx因其高性能、低资源消耗和灵活的配置能力,成为多域名部署的首选Web服务器,以下是具体配置步骤:

创建网站目录与文件

首先为每个域名创建独立的网站根目录,并准备默认首页文件,为domain1.comdomain2.com分别创建目录:

sudo mkdir -p /var/www/domain1.com /var/www/domain2.com
echo "<h1>Welcome to Domain1</h1>" | sudo tee /var/www/domain1.com/index.html
echo "<h1>Welcome to Domain2</h1>" | sudo tee /var/www/domain2.com/index.html

同时设置正确的目录权限,确保Nginx进程可读取文件:

sudo chown -R www-data:www-data /var/www/domain1.com /var/www/domain2.com
sudo chmod -R 755 /var/www/domain1.com /var/www/domain2.com

编写Nginx虚拟主机配置文件

Nginx的虚拟主机配置通常存储在/etc/nginx/sites-available/目录下,每个域名一个配置文件,例如创建domain1.com的配置文件/etc/nginx/sites-available/domain1.com

linux 多个域名

server {
    listen 80;
    server_name domain1.com www.domain1.com;
    root /var/www/domain1.com;
    index index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    access_log /var/log/nginx/domain1.com.access.log;
    error_log /var/log/nginx/domain1.com.error.log;
}

同理,domain2.com的配置文件只需修改server_nameroot路径,配置完成后,通过符号链接将文件启用到sites-enabled目录:

sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/domain2.com /etc/nginx/sites-enabled/

测试并重载Nginx配置

使用nginx -t检查配置文件语法是否正确,若无错误则重载Nginx使配置生效:

sudo nginx -t
sudo systemctl reload nginx

本地测试与域名解析

在本地测试时,可通过修改/etc/hosts文件将域名解析到服务器IP(仅本地生效);正式环境需在DNS管理平台(如阿里云、Cloudflare)添加A记录,将域名指向服务器公网IP,完成解析后,通过浏览器访问域名即可看到对应的首页内容。

多域名的HTTPS安全配置

现代网站部署中,HTTPS已成为标配,可保障数据传输安全,对于多域名场景,可通过以下方式配置SSL证书:

获取免费SSL证书

推荐使用Let’s Encrypt提供的免费证书,通过certbot工具可自动化申请和续签,例如为domain1.comdomain2.com分别申请证书:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d domain1.com -d www.domain1.com -d domain2.com -d www.domain2.com

执行过程中,certbot会自动修改Nginx配置文件,添加443端口监听和SSL相关指令(如ssl_certificatessl_certificate_key),并配置HTTP跳转HTTPS(强制访问加密链接)。

linux 多个域名

多域名通配符证书

若多个子域名属于同一主域名(如*.domain1.com),可申请通配符证书以减少证书管理成本,通配符证书需通过DNS验证,certbot支持--manual插件手动添加DNS TXT记录,具体操作可参考Let’s Encrypt官方文档。

性能优化与安全加固

多域名部署需兼顾性能与安全,以下为关键优化措施:

性能优化

  • 启用Gzip压缩:在Nginx主配置文件中添加gzip on;及相关参数(如gzip_types text/plain text/css application/json),压缩文本资源减少传输体积。
  • 配置缓存策略:通过expires指令设置静态资源缓存,例如location ~* \.(jpg|jpeg|png|gif|ico)$ { expires 7d; },让浏览器缓存图片等文件,减少重复请求。
  • 限制连接数:使用limit_conn_zonelimit_conn模块限制单个IP的并发连接数,防止单个用户占用过多资源。

安全加固

  • 定期更新软件:使用sudo apt update && sudo apt upgrade保持Nginx、系统组件及SSL证书工具为最新版本,修复已知漏洞。
  • 配置防火墙:通过ufwfirewalld仅开放必要端口(如80、443),禁用SSH远程登录端口(22)的公网访问,改通过VPN或密钥登录。
  • 禁用目录列表:在Nginx配置中添加autoindex off;,避免因未设置默认首页而暴露目录结构。

常见故障排查

多域名部署中可能遇到访问异常,以下为排查思路:

域名无法访问

  • 检查DNS解析是否生效:使用dig domain1.com查看域名是否解析到正确IP,若解析延迟可等待或刷新DNS缓存。
  • 检查Nginx错误日志:tail -f /var/log/nginx/error.log,重点关注“connection refused”“no such file or directory”等错误信息。
  • 检查端口是否开放:使用netstat -tuln | grep 80确认80端口是否被Nginx监听,若被防火墙拦截需执行sudo ufw allow 80

SSL证书报错

  • 证书过期:通过openssl s -connect domain1.com:443 -verify_return_error检查证书有效期,过期需重新申请并重载Nginx。
  • 域名与证书不匹配:确保server_name指令中的域名与证书颁发机构(CA)记录的域名完全一致,包括主域名和子域名。

在Linux服务器上管理多个域名,核心在于合理利用虚拟主机功能、规范配置文件结构,并结合HTTPS、性能优化和安全措施保障服务稳定性,无论是个人开发者还是企业运维,掌握这些实践不仅能提升资源利用率,还能为用户提供更安全、高效的访问体验,随着业务规模增长,还可结合负载均衡、容器化技术(如Docker、Kubernetes)进一步扩展多域名管理能力,构建高可用的Web服务架构。

赞(0)
未经允许不得转载:好主机测评网 » linux 多个域名