Nginx - создание поддомена, связанного с другим (локальным) веб-сайтом

Есть несколько проблем с вашим скриптом.

  • Отсутствуют двойные кавычки вокруг $ (ссылка для чтения…) . Это сломается, если цель ссылки содержит пробелы или подстановочные знаки.
  • Вы используете подстановку команды вокруг команды ln и используете результат как команду для выполнения. К счастью, это не причинит вреда, поскольку ln не производит никакого вывода.
  • Ваша команда mv перемещает символическую ссылку в целевое местоположение, что не имеет смысла.

Я думаю, это то, что вы хотели написать:

#!/bin/sh
ln -rs -- "$(readlink -f -- "$1")" "$1.tmp"
mv -f -- "$1.tmp" "$1"

В качестве альтернативы вы можете использовать утилиту symlinks (первоначально от Марка Лордса, теперь поддерживаемую Дж. Брандтом Бакли), присутствующую во многих дистрибутивах Linux. . Команда символические ссылки -c / путь / к / каталогу преобразует все символические ссылки в указанном каталоге в относительные ссылки.

-2
27.12.2017, 03:22
1 ответ

В любой среде Nginx и DNS необходимы две вещи, чтобы правильно создать новый субдомен с другим корнем документа:

  1. Дополнительный блок server { }для его обработки (помимо того, который у вас уже есть в элементе #3 ).

  2. DNS-запись, указывающая другой субдомен на нужный веб-сервер.

В зависимости от предоставленной конфигурации вам нужно сделать 2 вещи:

  1. В конфигурации вашего сайта test.example.comотсутствует директива server_name test.example.com;. Добавьте один и перезапустите процесс nginx.

  2. Установите test.example.comDNS-запись в DNS для вашего основного домена (, скорее всего, с помощью вашего облачного инструмента управления DNS ).

Всегда сообщайте NGINX, какие сайты обрабатывать и какие блоки серверов. Как специалист по сопровождению пакета nginxв Ubuntu, я знаком с большинством ловушек на уровне пользователя -, с которыми сталкиваются люди, например с этой.


Ты дал нам это:

server {
    root /var/www/html/test;

    location ~ /\.ht {
        deny all;
    }

    location / {
        index index.php index.html index.htm fastcgi_index;
        try_files $uri $uri =404 $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    listen 80;
}

Итак, буквально просто добавьте прямо перед строкой root:эта строка:

server_name test.example.com;

... и вы получите этот файл конфигурации:

server {
    root /var/www/html/test;
    server_name test.example.com;

    location ~ /\.ht {
        deny all;
    }

    location / {
        index index.php index.html index.htm fastcgi_index;
        try_files $uri $uri =404 $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    listen 80;
}
2
28.01.2020, 05:16

Теги

Похожие вопросы