Назад | Перейти на главную страницу

nginx: безопасно ли использовать $ http_host для корня сервера?

Я хотел бы обслуживать произвольные доменные имена на моем сервере nginx.

Эта конфигурация работает нормально:

    location / {
        root   /www/$http_host;
        index  index.html index.htm;
    }

Например, обслуживая запрос на www.mydomain.com будет искать файл в /www/www.mydomain.com/. Это работает, выглядит идеально.

Однако я не уверен, что это было бы безопасно. Допустит ли это какой-либо обход каталога или возникнет другая проблема безопасности? Какая проверка выполняется на $ http_host с помощью nginx?

Как заметил Иордания непроверенный может привести к побегу клиента из /www каталог и доступ к любому файлу.

К счастью, имена хостов являются подтверждено (см. исходный код) и уловки вроде использования двух последовательных точек .. или разделитель пути / не сработает: nginx вернется 400 Bad Header. Проверка может быть более строгой и разрешать только действительные метки DNS, но это личный вкус.

Тем не менее, с такой конфигурацией нельзя ничего личного в /www каталог, поэтому я бы предпочел использовать:

root /www/$http_host/html