Как настроить поддомены с помощью NGINX и DDNS

Как настроить поддомены с помощью NGINX и DDNS

Я зарегистрировал поддомен ddns на No-IP: example.ddns.net Я настроил No-IP для сопоставления с IP моего маршрутизатора, который перенаправляет порт на мой веб-сервер NGINX. Я хочу иметь отдельный веб-сервер, размещенный на котором, web1.example.ddns.netкоторый указывает на /var/www/web1. Я не знаю, как указать NGINX указывать на /var/www/web1при вызове из web1.example.ddns.net. Может ли кто-нибудь дать мне подробное объяснение того, как настроить мой сервер?

Ниже представлена ​​моя конфигурация, example.ddns.netэта конфигурация находится по /etc/nginx/sites-available/адресу, есть ссылка на /etc/nginx/sites-enabled.

server {
        listen 80 default_server;
        listen [::]:80 default_server;
       
        root /var/www/example.ddns.net;

        server_name example.ddns.net;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

}

Ниже представлена ​​моя конфигурация, web1.example.ddns.netэта конфигурация находится по /etc/nginx/sites-available/адресу, есть ссылка на /etc/nginx/sites-enabled.

server {
        listen 80;
        listen [::]:80;
       
        root /var/www/web1.example.ddns.net;

        server_name web1.example.ddns.net;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

}

Это единственные файлы, которые я изменил. Следующий сервер NGINX размещен на сервере Ubuntu Server, и я подключаюсь к серверу через ssh и подключаюсь к веб-странице через отдельный компьютер. Может ли кто-нибудь дать какие-либо инструкции по решению этой проблемы?

решение1


Следующий ответ довольно прост. Так что, пожалуйста, простите меня, если я повторю то, что вы уже знаете. =)


Я зарегистрировал поддомен DDNS на No-IP: example.ddns.net. [...] Я хочу иметь отдельный веб-сервер, на котором я размещаюсь и web1.example.ddns.netкоторый указывает на /var/www/web1.

В качестве предупреждения, если вы еще этого не сделали, вам нужно сделать ex. web1.example.ddns.netс No-IP и указать его на вашем сервере. В противном случае конфигурация сервера не будет иметь значения, так как никто не сможет связаться с сервером по этому адресу.

Чего я не знаю, так это как заставить NGINX указывать на /var/www/web1при вызове из web1.example.ddns.net.

Все, что вам действительно нужно, это базовые серверные блоки. Копирование из примеров NGINX по умолчанию:

напр. example.ddns.net

server {
        listen       80;
        server_name  example.ddns.net;
        
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/example.ddns.net;
            index  index.html index.htm;
        }

        # error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

например web1.example.ddns.net

server {
        listen       80;
        server_name  web1.example.ddns.net;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/web1;
            index  index.html index.htm;
        }

        # error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

Основные инструкции

  • Для Ubuntu вам следует поместить эти серверные блоки в соответствующий sites-availableкаталог (например, /etc/nginx/sites-available/), например, example.ddns.netи web1.example.ddns.net.

  • Создайте соответствующие символические ссылки на sites-enabled(например /etc/nginx/sites-enabled/), например:

    sudo ln -s /etc/nginx/sites-available/example.ddns.net /etc/nginx/sites-enabled/
    sudo ln -s /etc/nginx/sites-available/web1.example.ddns.net /etc/nginx/sites-enabled/
    

    или любым другим способом, рекомендуемым вашей ОС.

  • Запустите nginx -t(например, sudo nginx -t), как предложено в комментариях, чтобы убедиться, что NGINX не обнаружит никаких синтаксических ошибок или других проблем.

  • Перезапустите NGINX с помощью ex. sudo systemctl restart nginx.

Примечания

  • Вышеуказанные блоки отбрасывают IPv6 (вероятно, это не понадобится для тестирования).

  • Ни в одном из этих примеров не используется default_server.

  • Каждая соответствующая rootзапись помещается в locationблок (т.е. в корень веб-сайта /).

  • Второй блок сервера выше использует /var/www/web1как rootfor /(а не web1.example.ddns.net), поскольку это то, что вы изначально указали в своем вопросе. В любом случае, чтобы быть ясным, rootнеобходимо соответствовать любой структуре каталогов, которая есть в вашей физической файловой системе. То есть, он не должен отражать ваш server_name, если вы на самом деле не создали каталоги (или что-то подобное) с именами ex. example.ddns.netи web1.example.ddns.net.

  • Первый блок сервера по-прежнему использует /var/www/example.ddns.net, поэтому убедитесь, что это правильный путь к месту хранения файлов для example.ddns.net.

  • В целом, после внесения изменений на сервер, как правило, разумным шагом будет очистить кэш браузера, чтобы браузер не возвращал вам старые данные.

Связанный контент