You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 16.04服务器配置疑问:子域名指向主域名及site1.conf配置缺失

Ubuntu 16.04 Nginx配置问题解决方案

我来帮你搞定这两个Ubuntu 16.04上的Nginx配置问题,都是日常运维里常碰到的场景,一步步来:

1. 将所有子域名指向主域名(301永久重定向)

要让所有子域名(比如blog.yourdomain.com、test.yourdomain.com这类)自动跳转到主域名,用Nginx的正则匹配server块就能轻松实现:

  • 先打开Nginx的配置目录,创建一个专门的重定向配置文件:

    sudo nano /etc/nginx/sites-available/subdomain-redirect.conf
    
  • 写入以下配置,记得把yourdomain.com替换成你的实际主域名:

    server {
        listen 80;
        # 正则匹配所有以.yourdomain.com结尾的子域名
        server_name ~^(?<subdomain>.+)\.yourdomain\.com$;
    
        # 301永久重定向到主域名,保留原请求路径
        return 301 $scheme://yourdomain.com$request_uri;
    }
    
  • 启用这个配置,创建软链接到sites-enabled目录:

    sudo ln -s /etc/nginx/sites-available/subdomain-redirect.conf /etc/nginx/sites-enabled/
    
  • 检查配置语法是否正确,避免写错导致Nginx启动失败:

    sudo nginx -t
    
  • 最后重启Nginx生效:

    sudo systemctl restart nginx
    

如果你的站点启用了HTTPS,记得还要给443端口加同样逻辑的server块,把重定向目标改成https://yourdomain.com$request_uri,同时加上SSL证书相关配置。

2. 修复site1.conf使所有域名指向单个站点的缺失问题

很多时候配置不生效都是因为几个容易忽略的点,先给你一个正确的配置示例,再帮你排查常见问题:

正确的site1.conf配置模板

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    # 匹配所有可能的域名:主域名、www子域、所有子域、以及未定义的任意域名
    server_name yourdomain.com www.yourdomain.com *.yourdomain.com _;

    # 替换成你的站点实际根目录
    root /var/www/your-site-folder;
    # 根据站点类型调整(比如PHP站点要加上index.php)
    index index.html index.htm index.php;

    # 静态站点的默认请求处理
    location / {
        try_files $uri $uri/ =404;
        # 如果是PHP站点(比如WordPress),改成下面这行:
        # try_files $uri $uri/ /index.php?$args;
    }

    # 如果是PHP站点,必须加上这个块处理PHP文件
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        # Ubuntu 16.04默认PHP版本是7.0,根据实际情况调整
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
}

常见缺失问题排查

  • 忘记设置default_server:如果你的listen指令后面没加default_server,Nginx可能会沿用系统默认的default server配置,导致你的site1.conf不生效,这是最常见的坑!
  • server_name覆盖不全:只写主域名的话,www子域或其他域名不会匹配,一定要加上www.yourdomain.com *.yourdomain.com,最后加_可以匹配所有未明确定义的域名。
  • 站点目录权限错误:确保你的站点根目录/var/www/your-site-folder的所有者是www-data(Nginx运行用户),否则会出现403错误:
    sudo chown -R www-data:www-data /var/www/your-site-folder
    sudo chmod -R 755 /var/www/your-site-folder
    
  • 没检查配置语法:每次修改完配置都要跑sudo nginx -t,如果报错,先修正语法错误再重启。
  • 没重载/重启Nginx:修改配置后必须执行sudo systemctl reload nginx(重载不中断服务)或者sudo systemctl restart nginx,新配置才会生效。

内容的提问来源于stack exchange,提问作者Prem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:29:30