Как настроить nginx для создания поддомена?

У меня есть один домен myartistbook.in, который работает нормально. Я хочу создать для него поддомен с именем adminpanel.myartistbook.in. Я выполнил следующие шаги:

  1. Добавлено имя поддомена в / etc / hosts

     127.0.0.1 localhost
    ***.***.***.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 service nginx перезапуск

При доступе к сайту я получаю сообщение об ошибке: Не удалось найти IP-адрес сервера adminpanel.myartistbook.in. Я пропустил какой-либо шаг?


person Nikhil Patil    schedule 16.06.2019    source источник


Ответы (1)


Вместе с конфигурациями на стороне сервера, включающими домены и поддомены в server_name, вам необходимо убедиться, что ваши записи DNS для myartistbook.in также правильно настроены.

Вы добавили DNS-запись, указывающую adminpanel.myartistbook.in на ваш сервер? Для этого вы можете добавить запись A или запись CNAME. Быстрая проверка с помощью whatsmydns.net для adminpanel.myartistbook.in , похоже, вы пропустили этот шаг. Пожалуйста, проверьте документацию регистратора домена, чтобы узнать, как это сделать.

После добавления записей еще раз выполните быструю проверку с помощью whatsmydns.net, вступила ли ваша запись CNAME / A в силу.

На шаге 3 измените server_name на adminpanel.myartistbook.in без www, если только вы не намерены использовать весь www.adminpanel.myartistbook.in, что, как мне кажется, здесь не так, потому что вы пытались получить к нему доступ без www:

Не удалось найти IP-адрес сервера adminpanel.myartistbook.in.

Кроме того, вероятно, будет полезно использовать другой блок server {} при обращении к IP-адресам как server_name, а затем перенаправлять на домен / поддомен. Однако перенаправление с IP-адреса на ваш домен / субдомен сейчас может не быть приоритетом. Предложите пока удалить эту строку.

Затем запустите быструю nginx -T, чтобы проверить наличие ошибок в вашей конфигурации. Если проверка прошла успешно, перезагрузите веб-сервер nginx и попробуйте снова получить доступ к субдомену.

Надеюсь, это поможет!

person johnsing    schedule 16.06.2019
comment
Да, ты был прав. Теперь я добавил запись A. Теперь он отображается здесь (whatsmydns.net/#A/adminpanel.myartistbook.in) Похоже, что на отражение изменений в nginx уйдет не менее 10 часов. Вернется после того, как отразится. - person Nikhil Patil; 16.06.2019
comment
На самом деле не понял, что u имел в виду под этой строкой: «Кроме того, вероятно, хорошо использовать другой блок server {} при обращении к IP-адресам как server_name, а затем перенаправлять на домен / поддомен». - person Nikhil Patil; 16.06.2019
comment
Планируете ли вы сделать свой сайт напрямую доступным с помощью вашего IP-адреса? Это потенциально проблема безопасности, когда вы начинаете внедрять HTTPS. Если вы не применяете перенаправление с IP-адреса на домен, пользователи все равно смогут получить доступ к вашему сайту с помощью HTTP через IP-адрес, даже если вы намеревались использовать только HTTPS. Поэтому лучше всего перенаправлять их на myartistbook.in всякий раз, когда они пытаются получить доступ с помощью . . ***. 180 - person johnsing; 16.06.2019