
Я взглянул наКанонические темыServerFault и, к сожалению, тот, который я искал после "Apache vHost", был в списке неотвеченных вопросов. Я нашел это немного удивительным, так как множество людей задают именно этот вопрос.
В любом случае, мой вопрос не столько о "как", сколько о том, какие "лучшие практики" использовать в файле конфигурации виртуального хоста? У меня есть следующий виртуальный хост:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /home/webmaster/examplesite.com/htdocs
ErrorLog /home/webmaster/examplesite.com/logfiles/error.log
CustomLog /home/webmaster/examplesite.com/logfiles/access.log combined
</VirtualHost>
Он выполняет свою работу и заставляет вещи работать, однако я хотел бы узнать, могу ли я улучшить его. В частности, я хотел бы убедиться, что следующие проблемы решены:
- Насколько безопасен мой сайт?
- Я хотел бы иметь папку "загрузки", куда пользователи могут публиковать изображения. Нужно ли мне что-то добавлять в файл vHost?
- Оптимизирует ли указанная выше настройка мой веб-сайт или я могу оптимизировать его дальше?
- Что-то еще я мог пропустить?
решение1
Насколько безопасен мой сайт?
Хранить ваши файлы журналов так, чтобы они были потенциально общедоступны, — плохая идея. Печать сообщений об ошибках должна быть отключена в производстве, чтобы злоумышленники были слепы (они не могли использовать сообщения об ошибках против вас[1]). Имея доступ к журналам ошибок, они имеют больше шансов на пробы и ошибки.
Я хотел бы иметь папку "загрузки", куда пользователи могут публиковать изображения. Нужно ли мне что-то добавлять в файл vHost?
Вы хотите разместить загрузкиснаружикорневой каталог документа, чтобы уменьшить вероятность того, что пользователь может загрузить скрипт (например, PHP), а затем перейти к нему и запустить его. Конечно, это не единственная защита, которую вам следует иметь, но это, безусловно, один из компонентов.
Оптимизирует ли указанная выше настройка мой веб-сайт или я могу оптимизировать его дальше?
Вы не сможете по-настоящему оптимизировать свой веб-сайт с помощью vhost — это настройка уровня Apache (выходит за рамки данного вопроса).
Что-то еще я мог пропустить?
Честно говоря, сложно сказать. У всех разные требования. Например, если ваш сайт example.com
— вы ожидаете, www.example.com
что он тоже будет работать? Если да, то вам не хватает ServerAlias
.
[1] Представьте, что они могли бы сгенерировать ошибку «недопустимый SQL». Тогда они знают, что нашли не очищенный ввод, и быстро нашли способ взломать ваш сайт. Хуже всего то, что такие атаки можно автоматизировать.