首页 > 解决方案 > 如何设置 nginx 来创建子域?

问题描述

我有一个域 myartistbook.in,它运行良好。我想为其创建一个名为 adminpanel.myartistbook.in 的子域。我遵循的步骤是:

  1. 在 /etc/hosts 中添加子域名
     127.0.0.1 本地主机
    ***.***.***.180 myartistbook
    ***.***.***.180 adminpanel.myartistbook


  1. 编辑/etc/nginx/nginx.conf:
    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    include /usr/share/nginx/modules/*.conf;
    events {
        worker_connections 1024;
    }
    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  myartistbook.in www.myartistbook.in;
        root         /root/krim.com;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

   server {
    listen 80;
    root /root/sites/adminpanel.com;
    server_name adminpanel.myartistbook.in www.adminpanel.myartistbook.in;
    index index.html;

    location / {
        try_files $uri $uri/;   
        }
    }
}

  1. 在 /etc/nginx/sites-available 中添加了一个名为 adminpanel.com 的文件。
server {
          listen 80;
          server_name www.adminpanel.myartistbook.in;
          server_name ***.***.***.180;
          root /root/sites/adminpanel.com;
          index index.html;

          access_log /var/log/nginx/adminpanel.com.access.log;
          error_log /var/log/nginx/adminpanel.com.error.log;
          location / {
            try_files $uri /index.html =404;
          }
        }

  1. 将上述服务器块链接到 /etc/nginx/sites-enabled

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

  1. 重新启动nginx

sudo 服务 nginx 重启

访问该站点时,我收到错误adminpanel.myartistbook.in 的服务器 IP 地址找不到。 我错过了任何步骤吗?

标签: nginxweb-hostingnginx-config

解决方案


与涉及域和子域的服务器端配置一起 server_name,您需要确保您的 DNS 记录myartistbook.in也正确配置。

您是否添加了 DNS 记录以指向adminpanel.myartistbook.in您的服务器?您可以为此添加 A 记录或 CNAME 记录。使用 whatsmydns.net 快速检查adminpanel.myartistbook.in,您似乎错过了这一步。请查看您的域名注册商的文档以了解如何执行此操作。

添加记录后,再次使用 whatsmydns.net 快速检查您的 CNAME/A 记录是否已生效。

在您的第 3 步中,将 修改server_nameadminpanel.myartistbook.in不带www,除非这实际上是您打算使用整个 www.adminpanel.myartistbook.in,我认为这里不是这种情况,因为您试图在没有 www 的情况下访问它:

找不到 adminpanel.myartistbook.in 的服务器 IP 地址。

server {}此外,在引用 IP 地址时使用不同的块可能会很好,server_name然后重定向到域/子域。但是,从 IP 地址重定向到您的域/子域可能不是现在的优先事项。建议同时删除该行。

然后快速运行nginx -T以检查配置中的错误。如果检查成功,请重新加载您的 nginx Web 服务器并再次尝试访问子域。

希望有帮助!


推荐阅读