Веб-сервер apache і його використання у хостинг-провайдерів

Довідкова інформація >> Статті про хостинг >> Веб-сервер Apache і його використання у хостинг-провайдерів

Apache використовується для організації більшості веб-серверів в світі і є наймасовішим продуктом свого класу. Цей сервер має великими можливостями конфігурації, є дуже продуктивним і підтримує всі відомі протоколи для роботи веб-серверів. Спеціально для Apache створені версії таких популярних мов програмування як Perl і PHP, а також цей сервер легко інтегрується з широко вживаними СУБД (наприклад, MySQL).

Користувачам надається можливість самостійної конфігурації Apache шляхом використання відповідних директив у файлі .htaccess. Таким чином можна вирішити більшість завдань по конфігурації веб-сервера в умовах масового хостингу.

індексний файл

За замовчуванням індексними файлами є наступні: index.shtml, index.html, index.htm, index.php, index.php4, index.phtml. Якщо ви хочете, щоб першим відкривався якийсь інший файл, потрібно перевизначити поточні значення.

Призначення і використання файлу .htaccess

Файл .htaccess (зверніть увагу, що перший символ в назві файлу - крапка) застосовується для управління веб-сервером Apache з боку кінцевого користувача хостингу. Ви ставите в цей файл директиви, які веб-сервер сприймає і обробляє, виконуючи далі дії відповідно до настройками, які були зроблені користувачем.

Файл .htaccess може бути розміщений в кореневому каталозі веб-сервера (прямо в каталозі www / htdocs) і в цьому випадку директиви з такого .htaccess діють по всьому веб-сервера. Також .htaccess може перебувати і в конкретному підкаталозі сервера і тоді директиви, які вказані в цьому файлі, "перекривають" дія директив з "основного" файлу, який розміщений в каталозі www або в будь-якому каталозі більш високого рівня. Тобто, дія директив з .htaccess успадковується зверху вниз, але не навпаки. Зміни, внесені в файл, вступають в силу негайно. Це пов'язано з тим, що інформація з .htaccess перечитується при кожному зверненні до веб-сервера Apache.

У .htaccess може бути вміщено більшість з доступних директив для веб-сервера. Слід зауважити, що директиви, в описі яких в поле Context відсутня згадка .htaccess недоступні для використання в цьому файлі конфігурації. На прикладі директиви AddType можна бачити, що поле Context містить згадку про .htaccess, відповідно ви можете її використовувати:

Якщо використовувати потрібну директиву не вийшло і ви помітили помилку після додавання директиви в .htaccess, швидше за все використання команди заборонено в умовах віртуального хостингу. Напишіть в технічну підтримку, ми постараємося вам допомогти знайти вихід із ситуації. Прохання докладно описати проблему і вказати цілі, яких хочете досягти використанням даної директиви.

Приклад використання .htaccess. Ми хочемо "пояснити" веб-сервера що все html-документи, які розміщені на сервері, потрібно "віддавати" клієнту в кодуванні koi8-r, а не в windows-1251, як це сервер робить за замовчуванням. Помістимо в .htaccess рядок:

AddType "text / html; charset = koi8-r" .html .htm .shtml

Отримавши такий .htaccess, веб-сервер Apache стане видавати клієнтському браузеру заголовок, в якому буде вказано, що документ має кодування koi8-r. Це приклад найпростішого використання можливостей конфігурації Apache через файл .htaccess.

Приклади: як закрити директорію паролем

Одна із стандартних завдань, яке вирішується шляхом використання .htaccess, це обмеження доступу до певного каталогу на сервері. Наприклад, потрібно дати доступ до якогось каталогу окремим відвідувачам, забезпечивши їх при цьому унікальними логіном і паролем.

Створюємо в каталозі, до якого хочемо обмежити доступ по паролю, файл .htaccess з такими директивами:
AuthType Basic
AuthName "Some Name"
AuthUserFile /www/user-www/www/htdocs/some_dir/.htpasswd
require valid-user

Шлях /www/user-www/www/htdocs/some_dir/.htpasswd позначає повний шлях до файлу паролів на диску нашого сервера. Якщо, наприклад, ви помістіть файл .htpasswd (в ньому будуть паролі) в домашній каталог, куди ви потрапляєте, зайшовши на сервер по FTP. то шлях до цього файлу буде мати вигляд /www/user-www/www/htdocs/some_dir/.htpasswd, де user-www - Ваш логін.

Створюємо файл паролів. Файл з паролями повинен містити такі рядки login: password. Пароль повинен бути зашифрований з використанням алгоритму MD5. Один із способів створити такий файл - скористатися програмою, яка входить в поставку Apache - htpasswd (на нашому сервері вона знаходиться в каталозі / usr / local / apache / bin, повний шлях - / usr / local / apache / bin / htpasswd).

Розглянемо, як створити файл паролів в unix shell прямо на сервері. Зайдемо в shell і виконаємо наступні команди:

htpasswd -mbc .htpasswd user1 7vB1nDkir - створюємо новий файл .htpasswd, в який додаємо запис для користувача user1 з паролем, зазначеним у командному рядку. Прохання обов'язково замінити 7vB1nDkir на будь-який власний пароль - тут цей пароль вказано тільки для прикладу

htpasswd .htpasswd user2 - додаємо в уже існуючий файл .htpasswd користувача user2, а пароль вводимо вручну у відповідь на відповідний запит програми

Після закінчення закладу всіх логінів файл потрібно завантажити на сервер.

Приклади: перевизначення індексного файлу

Отримавши .htaccess з таким вмістом, веб-сервер Apache відкриє за замовчуванням саме файл myindex.php.

Приклади: заборона і дозвіл видачі лістингу

У ряді випадків потрібне виводити список файлів в каталозі (лістинг каталогу) в разі відсутності в каталозі файлу, який показується за замовчуванням. В цьому випадку необхідно додати в .htaccess наступний рядок:

Файл .htaccess необхідно створювати саме в тому каталозі, в якому планується дозволити лістинг. Дана директива буде діяти також і на все підкаталоги (це досягається включеної за замовчуванням в налаштуваннях віртутального хоста директивою AllowOverride All).

За замовчуванням включена директива Options -Indexes, і в разі відсутності індексного сторінки ви отримаєте HTTP помилку 403.

Приклади: власні сторінки помилок

Приклади: заборона доступу до деяких файлів

Іноді виникає необхідність заборонити доступ до певних файлів. Наприклад, до конфігураційним файлів, що містять реквізити доступу до баз даних, інтерфейсів і т.п. Припустимо, в файлі config.cfg ви зберігаєте логін / пароль доступу до бази даних. Створюємо в цій директорії файл .htaccess з директивами:


Order allow, deny
Deny from all

Приклади: заголовок last-modified

У ряді випадків потрібне, щоб web-сервер видавав HTTP-заголовок Last-Modified. Наприклад, при реєстрації вашого ресурсу на Яндексі, виникає помилка "Неправильні дати".

Для статичних документів, згідно з документацією по Apache:

cервер видаватиме значення last-modified в тому випадку, якщо прописана директива "XBitHack full" (просто пропишіть цей рядок в .htaccess), і для файлу, до якого відбувається звернення, виставлений атрибут "виконуваний" для групи.

Це дійсно для html-файлів. У скриптах last-modified видається іншими засобами. Наприклад, якщо взяти до уваги те, що php-скрипт генерує код динамічно, то самим логічним буде як last-modified віддавати поточну дату і час. Реалізується це таким чином:

Увага: команда header повинна виконуватися в php-скрипті до того, як скрипт почне видавати html-текст в браузер користувача.

Корисні посилання по темі:

Встановлені модулі Apache

На хостингу на різних серверах можуть бути інстальовані різні модулі веб сервера. Якщо користувачеві необхідний той чи інший модуль, то уточнити можливість його підключення користувач може, направивши відповідний запит в технічну підтримку або в розділі «Написати нам» в панелі управління хостингом, із зазначенням потрібного модуля.