Вебинар, 03.08 в 19:00 free
Учим создавать сайт, который увеличит продажи в 5 раз

Настройка VDS на Ubuntu 14.04. Часть 7. Примеры конфигурации сайтов

Обсудить
VDS на Ubuntu 14.04

Мы продолжаем цикл статей о настройке VDS с операционной системой Ubuntu 14.04. 

На текущий момент на нашем VDS уже установлены Apache и/или Nginx - об их установке и настройке мы писали в предыдущих статьях. Еще немного ранее мы касались вопроса выбора того или иного сервера и схемы его использования.

Сегодня мы продолжим разговор о настройке веб-серверов и ее особенностях в зависимости от выбранной схемы. В статье мы рассмотрим примеры конфигурации Apache и Nginx для наиболее популярных CMS (Bitrix, Wordpress, Joomla), а также способы решения типичных задач - таких, как настройка перенаправлений и управление доступом - с помощью конфигурации серверов.

 

Запустите свой сервер

 

Итак, речь пойдет о следующих схемах работы:

  1. Apache + mod_php
  2. Nginx + php_fpm
  3. Nginx + Apache + mod_php

Apache + mod_php

При подобной схеме все настройки могут быть прописаны в файле .htaccess - на него не накладывается никаких архитектурных ограничений. Также в этом режиме доступны все команды Apache.

Если при этом в настройках Apache не было указано значение None для параметра AllowOverride, то для настройки сайтов Вы можете использовать стандартные файлы .htaccess Вашей CMS. 

Примеры данных файлов можно скачать здесь: 

Nginx + php_fpm

При использовании данной схемы возникает противоположная ситуация - файл .htaccess не может быть использован при настройке сайта. 

Все настройки из данного файла необходимо перенести в конфигурационный файл сайта для Nginx.

Примеры конфигурационных файлов Вы можете скачать здесь:

Nginx + Apache + mod_php

При подобной связке Nginx, выступающий в роли frontend-сервера, будет получать все входящие запросы и далее либо обрабатывать их и отдавать клиенту, если это статические данные, либо передавать запрос backend-серверу Apache, если это динамические данные.


Конфигурация Nginx + Apache + mod_php

Соответственно, Вам необходимо внести определенные настройки в конфигурационный файл сайта для проксирования запросов. Например:

location / {
    proxy_pass http://localhost:8080/;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|js|txt|doc|docx|xls|xlsx|ppt|pptx)$ {
    root /var/www/site1/public-html/;
}

Таким образом, статические файлы с расширениями, указанными в списке (рекомендуем Вам отредактировать его под свои нужды), не будут обрабатываться через Apache, и любые директивы в файле .htaccess не будут на них действовать. Для ограничения доступа к ним необходимо дополнительно дописывать соответствующие правила в Nginx.

Кроме настроек самой CMS Вам может потребоваться донастройка каких-либо задач.
Мы рассмотрим настройку ограничений и перенаправлений.

Правила перенаправлений 

Замените old.ru и new.ru, а также выделенные цветом параметры, на необходимые Вам значения.
 

Apache Nginx
Общий блок

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
#Ваши правила
</IfModule>

server {
server_name old.ru
#Ваши правила
}

Перенаправление на другой домен

RewriteCond %{HTTP_HOST}
^(www\.)?old\.ru$
RewriteRule ^(.*)$ http://www.new.ru/$1
[R=301,L]

server_name old.ru www.old.ru;
return 301 $scheme://new.ru$request_uri;

Перенаправление домена с www на домен без www

RewriteCond %{HTTP_HOST} ^www\.new\.ru$ [NC]
RewriteRule ^(.*)$ http://new.ru/$1 [R=301,L]

server_name www.new.ru;
return 301 $scheme://new.ru$request_uri;

Перенаправление домена без www на домен с www

RewriteCond %{HTTP_HOST} ^new\.ru$ [NC]
RewriteRule ^(.*)$ http://www.new.ru/$1 [R=301,L]

server_name new.ru;
return 301 $scheme://www.new.ru$request_uri;

Перенаправление в подкаталог (в примере - в подкаталог forum)

RewriteCond %{HTTP_HOST} ^forum\.new\.ru$
RewriteCond %{REQUEST_URI} !/forum/
RewriteRule ^(.*)$ /forum/$1 [L]

server_name forum.new.ru;
location / {
        return 301 $scheme://new.ru/forum$request_uri;
    }

Перенаправление c http на https

RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

if ($ssl_protocol = "") {                               
rewrite ^/(.*) https://$server_name/$1 permanent;
}

 

Ограничение доступа

Замените выделенные цветом параметры на актуальные для Вас значения.

Apache Nginx
Ограничение доступа по паролю (Basic Auth)

AuthType Basic
AuthName "Restricted"
AuthUserFile  /path/to/.htpasswd
Require user admin

location / {
auth_basic "Restricted";
auth_basic_user_file /path/to/passwd;
}

Restricted - имя области, куда пользователь пытается получить доступ; зона применения аутентификации.

В параметре AuthUserFile (auth_basic_user_file для Nginx) необходимо указать абсолютный путь к файлу, содержащему пароли.

В параметре Require указывается требование, которое должны быть выполнено для получения доступа. Например, 
Require user admin - доступ разрешен только пользователю admin;
Require valid-user - доступ разрешен всем пользователям, прошедшим проверку

Блокировка User-agent

RewriteCond %{HTTP_USER_AGENT} googlebot [NC,OR]
RewriteCond %{REQUEST_URI} !^/robots\.txt$ RewriteCond %{REQUEST_URI} !^/403\.html$ RewriteRule ^.* - [F,L]

или

SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user

location / {
if ($http_user_agent = "Mozilla/4.0 (compatible; ICS)")
{
return 403;
}

С помощью данных правил Вы можете заблокировать доступ к сайту для нежелательных посетителей и ботов.
Блокировка IP-адресов

order allow,deny
deny from 192.168.132.24
allow from all

location / {
deny all;
allow 192.168.1.0/24;
}

В данном случае в первую очередь будут обработаны все директивы Allow, после - Deny. Будет разрешен доступ для всех IP, кроме 192.168.132.24.

Обратите внимание, что если изменить порядок директив в Order на Deny,Allow, то доступ будет разрешен всем, т.к. директива Allow all будет применена последней и “перезапишет” правила, указанные в deny.

В данном случае правила применяются в порядке их записи. 
В примере выше будет запрещен доступ для всех IP, кроме подсети 192.168.1.0/24.


Надеемся, приведенная в статье информация окажется полезной для Вас и поможет в дальнейшей работе с Вашим сайтом на VDS. 
Если у Вас возникнут вопросы, спрашивайте в комментариях - будем рады совместно разобраться в сложных моментах.

Комментарии

Рекомендуем

С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта