Многостранният апаш. Ние хостваме няколко сайта на един уеб сървър

Архив с номера/2005/Брой №12 (37)/Многостранен апаш. Ние хостваме няколко сайта на един уеб сървър

ПАВЕЛ МАЛАХОВ

Много лица на Apache
Ние хостваме няколко сайта на един уеб сървър

След като са инсталирали уеб сървъра Apache и са изложили сайта си през него, някои хора дори не подозират какъв мощен инструмент имат. С негова помощ можете да управлявате стотици сайтове с различни имена и нива на достъп. Паричните разходи и времето, изразходвано за добавяне на всеки сайт, са минимални.

  • Компютър с инсталиран пакет Apache 1.3 или 2.0.
  • Адрес на сървъра в Интернет: 10.0.10.15 и име: teo.mynetwork.ru.
  • Адрес на сървъра в локалната мрежа: 192.168.100.18.
  • Няколко сайта.
  • Няколко имена за един сайт.

  • Хоствайте всички сайтове на един сървър.
  • Направете достъп до всеки сайт на отделен URL адрес.
  • Ограничете достъпа до някои сайтове.
  • Пренасочвайте няколко имена към един сайт.

Нека да преминем от просто към сложно. Като начало разгледайте случая, когато имаме два сайта и две имена teo.mynetwork.ru и logos.mynetwork.ru. Тези имена трябва да са налични, т.е. притежателят на зоната mynetwork.ru трябва да регистрира възлите teo и лого в нея.

За всеки сайт създайте директория в корена на документа на Apache (съответно teo и логотипи). За Linux това е/var/www/html по подразбиране, но за да сте сигурни къде се намира на нашия сървър, погледнете стойността на директивата DocumentRoot в /etc/httpd/conf/httpd.conf. И така, ние създаваме:

# mkdir/var/www/html/teo/var/www/html/logos

Ще разделим дневниците за всеки сайт, така че ще създадем подходящите директории:

# mkdir/var/log/httpd/teo/var/log/httpd/logos

Ако вече сме създали уебсайт, тогава цялото му съдържание се прехвърля в създадената за него директория, т.е. от/var/www/html до/var/www/html/teo. Поставяме новия сайт logos.mynetwork.ru в/var/www/html/logos.

Сега конфигурираме Apache. Добавете в края на файла /etc/httpd/conf/httpd.conf:

Комбиниран CustomLog/var/log/httpd/teo/access_log

Комбиниран CustomLog/var/log/httpd/logos/access_log

Това може да стане по два начина: чрез създаване на синоними или пренасочване на всички заявки от друг сайт.

Синонимите са посочени от директивата ServerAlias, могат да съдържат маска и са разделени с интервал. Ето няколко примера за създаване на синоними:

ServerAlias ​​www.teo.mynetwork.ru god.mynetwork.ru pantheon.ru

Пренасочването се задава от директивата за пренасочване. Създаваме нов празен сайт pantheon.ru. Както при предишните сайтове, това се прави в три стъпки: създаване на директория за документи, за списания и добавяне на конфигурация към httpd.conf:

Комбиниран CustomLog/var/log/httpd/pantheon/access_log

Можете да пренасочвате не от целия сайт, а само от конкретна директория или дори документ:

Пренасочване/самаг http://samag.ru

Пренасочване/ftp/ftp://citkit.ru/pub/

Пренасочване /find/ya.htm http://yandex.ru

В същото време Apache възприема първия параметър на директивата за пренасочване не като URL, а като набор от символи, ако те съвпадат, възниква пренасочване. От това следва, че той не проверява за наличието на посочените директории и файлове и не счита връзките/samag и/samag/същите.

Ограничаване на достъпа до сайтове

# Това трябва да бъде променено на каквото и да сте задали DocumentRoot

Сега да преминем директно към разпределението на правата за достъп. Има два начина да зададете права за достъп до директорията на уебсайта с помощта на Apache: поставете файла .htaccess в директорията или използвайте директива в конфигурационния файл. И в двата случая правилата се прилагат за поддиректориите.

Ето предимствата от използването на .htaccess файл:

Има и недостатъци:

  • за да отговоря на въпроса: "Какви ограничения за достъп съществуват в сайта?" - администраторът трябва да запомни в кои директории се намират тези файлове и връзки;
  • ако сайтът ще бъде прехвърлен на друг сървър и, което е много вероятно, ще бъде поставен в друга директория, тогава ще отнеме много време за коригиране на връзките;
  • натоварването на сървъра се увеличава, тъй като с всяка заявка за ресурс той осъществява достъп до .htaccess в тази директория и всички горни в йерархията, наследявайки техните настройки, т.е. заявка за ресурс http://teo.mynetwork.ru/olimp/staff/zeus.htm инициира проверка на .htaccess файлове в директориите "./", "./olimp/", "./olimp/staff/".

Като дефинираме настройките за достъп до директориите на сайта, използвайки директива в един конфигурационен файл за целия сайт, ще получим следните предимства:

  • можете да сте сигурни, че няма да пропуснем нищо, ако внезапно се наложи да промените нивото на достъп до някакъв ресурс;
  • увеличаваме скоростта на отговор на сървъра на заявки, тъй като всички настройки се зареждат при стартиране на Apache.

Е, трябва да се примирите с факта, че за всяка директория е необходимо да се опишат правата поотделно (не забравяйте, че за поддиректориите правата се наследяват), дори ако те са еднакви.

Вярно е, че има поддръжка за маски, например:

ще съответства на 3-цифрените имена на директории в/www /, но това не винаги може да улесни нещата.

Ще разгледаме двата метода и ще променим разрешенията за двете директории на сайта с лога.

Първо. Ние описваме правата за достъп до директориите в основния конфигурационен файл httpd.conf:

Комбиниран CustomLog/var/log/httpd/logos/access_log