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

nginx配置子域名,如何绑定多个二级域名?

在网站管理中,子域名的合理配置能够有效提升网站的组织结构和用户体验,Nginx作为一款高性能的Web服务器和反向代理服务器,其灵活的配置能力使得子域名管理变得简单高效,本文将详细介绍如何通过Nginx配置子域名,从基础设置到进阶优化,帮助读者全面掌握相关技能。

nginx配置子域名,如何绑定多个二级域名?

理解子域名与DNS解析

在配置Nginx之前,需明确子域名的工作原理,子域名是主域名的延伸,例如blog.example.com中的blog即为子域名,example.com是主域名,子域名的生效依赖于DNS解析,需在域名管理后台添加A记录或CNAME记录,将子域名指向服务器的IP地址,添加A记录blog.example.com,值为服务器公网IP,确保DNS生效后(通常需要几分钟到几小时),才能进行后续的Nginx配置。

Nginx配置子域名的核心步骤

创建网站目录与配置文件

为子域名创建独立的网站目录,用于存放网站文件,为blog.example.com创建目录/var/www/blog,并设置适当的文件权限:

sudo mkdir -p /var/www/blog
sudo chown -R $USER:$USER /var/www/blog
sudo chmod -R 755 /var/www/blog

在Nginx配置目录/etc/nginx/sites-available/下创建子域名配置文件,如blog.conf,使用文本编辑器打开并编写基础配置。

编写Nginx配置文件

一个基础的子域名配置文件包含server块,定义监听端口、根目录、域名及错误日志等关键信息,以blog.example.com为例,配置内容如下:

server {
    listen 80;
    server_name blog.example.com www.blog.example.com;
    root /var/www/blog;
    index index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}
  • listen 80:监听HTTP默认端口;
  • server_name:指定子域名及带www的变体;
  • root:指向网站根目录;
  • index:默认首页文件;
  • location:处理请求路径,try_files确保文件存在性。

启用配置文件并测试

配置文件创建后,需通过符号链接将其激活到sites-enabled目录:

sudo ln -s /etc/nginx/sites-available/blog.conf /etc/nginx/sites-enabled/

使用sudo nginx -t测试配置语法是否正确,若无错误则执行sudo systemctl reload nginx重新加载Nginx配置,使新配置生效。

多子域名与泛域名配置

当需要管理多个子域名时,可通过重复上述步骤为每个子域名创建独立配置文件,若子域名结构相似(如api.example.comadmin.example.com),可使用通配符简化配置:

nginx配置子域名,如何绑定多个二级域名?

server {
    listen 80;
    server_name *.example.com;
    root /var/www/$host;
    # 其他配置...
}

其中$host变量会动态匹配请求的域名,实现多子域名共享配置逻辑,对于泛域名(如*.example.com),需在DNS解析中添加通配符A记录,并确保Nginx配置支持通配符server_name

HTTPS配置与安全优化

为子域名启用HTTPS可提升安全性,可通过Let’s Encrypt免费获取SSL证书,使用certbot工具自动配置:

sudo certbot --nginx -d blog.example.com -d www.blog.example.com

执行后,certbot会自动修改Nginx配置,添加443端口监听和SSL证书路径,配置示例如下:

server {
    listen 443 ssl;
    server_name blog.example.com www.blog.example.com;
    root /var/www/blog;
    ssl_certificate /etc/letsencrypt/live/blog.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/blog.example.com/privkey.pem;
    # 其他配置...
}

建议在HTTP配置中添加301重定向,强制跳转HTTPS:

server {
    listen 80;
    server_name blog.example.com www.blog.example.com;
    return 301 https://$host$request_uri;
}

可通过添加add_header指令增强安全性,例如启用HSTS、CSP等:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;

反向代理与负载均衡

若子域名对应的应用服务运行在其他端口或服务器,可通过Nginx的反向代理功能实现请求转发,将api.example.com的请求代理到本地8080端口:

server {
    listen 80;
    server_name api.example.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

对于多台服务器的负载均衡场景,可定义upstream服务器池,并配置负载均衡策略(如轮询、加权轮询):

nginx配置子域名,如何绑定多个二级域名?

upstream backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080 backup;
}
server {
    listen 80;
    server_name app.example.com;
    location / {
        proxy_pass http://backend;
    }
}

日志管理与性能优化

子域名的访问日志默认存放于/var/log/nginx/目录,可通过access_logerror_log指令自定义日志路径和格式:

access_log /var/log/nginx/blog.access.log combined;
error_log /var/log/nginx/blog.error.log warn;

为提升性能,可启用Gzip压缩、缓存静态资源(如图片、CSS、JS):

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 7d;
    add_header Cache-Control "public, no-transform";
}

定期分析日志文件(如使用awkgrep或ELK工具),可及时发现异常访问和性能瓶颈。

通过以上步骤,即可完成Nginx子域名的完整配置,从基础搭建到安全优化、反向代理和性能调优,满足不同场景下的需求,合理的子域名配置不仅能提升网站的可维护性,还能为用户提供更精准、高效的服务体验。

赞(0)
未经允许不得转载:好主机测评网 » nginx配置子域名,如何绑定多个二级域名?