Конфиг Apache для маленького WDS

# Global configuration
PidFile ${APACHE_PID_FILE}
Timeout 25
KeepAlive Off
MaxKeepAliveRequests 50
KeepAliveTimeout 10

<IfModule mpm_prefork_module>
StartServers 1
MinSpareServers 1
MaxSpareServers 10
ServerLimit 128
MaxClients 100
MaxRequestsPerChild 3000
</IfModule>

<IfModule mpm_worker_module>
StartServers 1
MinSpareThreads 5
MaxSpareThreads 15
ThreadLimit 25
ThreadsPerChild 5
MaxClients 25
MaxRequestsPerChild 200
</IfModule>

<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 200
MaxRequestsPerChild 4000
</IfModule>

Запустить apache с опцией ulimit -s unlimited в CentOS| The Bitrix

Bitrix ругается на pcre.recursion_limit при проверке сайта. Исправление для deb делается крайне просто и сто раз уже мусолилось на просторах сети. Нужно дополнить вызов apache опцией «ulimit -s unlimited» в /etc/init.d/apache2.

Однако, у меня CentOS и там не все так весело. Init.d, конечно, есть, но вот в нем никакого apache нет.

Долгий поиск давал в основном танцы с бубном вокруг limits.conf, но плевать apache на него хотел.

Итого, все же, было найдено решение:

/usr/lib/systemd/system/httpd.service и в /lib/systemd/system/php5-fpm.service, поскольку у меня php-fpm в блоке [Service] добавить опцию LimitSTACK=infinity.

Ребутаем сервер и Bitrix счастлив!

Ubuntu – Подробная информация о пакете apache2-mpm-itk в lucid

The ITK Multi-Processing Module (MPM) works in about the same way as the classical «prefork» module (that is, without threads), except that it allows you to constrain each individual vhost to a particular system user. This allows you to run several different web sites on a single server without worrying that they will be able to read each others’ files. This is a third-party MPM that is not included in the normal Apache httpd.

Please note that this MPM is somewhat less tested than the MPMs that come with Apache itself.

Запуск Apache с правами пользователя, от которого был запуск, а не с правами www group

Веб-сервер работает в режиме MPM и для работы с файлом конфигурации httpd.conf нужно использовать параметр AssignUserID вместо SuexecUserGroup.

AssignUserID UserName UserGroup

Ubuntu – Подробная информация о пакете apache2-mpm-itk в lucid.

Настройка переадресации на папки со слешем в конце

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.site.ru/$1/ [L,R=301]

Как сделать 301 редирект в htaccess, как настроить правильный 301 редирект для сайта (с www, на другой домен, bitrix, на папку со слешем, для домена РФ).

Настройка HTTPS в Apache

Веб-сервер Apache полностью поддерживает работу по HTTPS. Для того, чтобы активировать поддержку HTTPS на уже установленном Apache необходимо выполнить следующее.

Создание ключа и ssl-сертификата

Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания, тем не менее не гарантирует клиентам, что сервер является именно тем сервером, который им нужен. Преймуществом самоподписанных сертификатов является их бесплатность. Сертификат, подписанных компанией-сертификатором (Certificate authority) стоит денег.

Для создания ключа и сертификата вводим команду:

openssl req -new -x509 -days 30 -keyout server.key -out server.pem

На вопрос «Enter PEM pass phrase:» отвечаем паролем, подтверждаем и запоминаем. На все последующие вопросы отвечаем произвольно, можно просто щелкать по Enter соглашаясь с предложенными вариантами, только на вопрос «Common Name (eg, YOUR name) []:» отвечаем именем сайта, для которого создаем сертификат, например www.example.com.

После ответа на все вопросы в директории должны появиться два новых файла — server.pem и server.crt (ключ и сертификат, соответственно).

Чтобы использовать сгенерированный ключ нужно знать пароль введенный нами, и Apache будет спрашивать его у нас при загрузке, а к чему нас млишние вопросы от демонов? :) Поэтому снимаем пароль с ключа:

cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key
rm server.key.orig

Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:

sudo cp server.pem /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/
sudo chmod 0600 /etc/ssl/private/server.key

Настройка Apache

Для начала необходимо активировать 

mod_ssl

:

sudo a2enmod ssl

А затем включить настройки HTTPS сайта по умолчанию:

sudo a2ensite default-ssl

Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию, указав в нём пути к вашим сертификатам. Сам файл называется 

/etc/apache2/sites-enabled/default-ssl

 (или 

/etc/apache2/sites-enabled/default-ssl.conf

).

В этом файле рекомендуется после директивы

SSLEngine on

добавить строчку

SSLProtocol all -SSLv2

дабы запретить использование устаревшего протокола SSLv2.

Дальше вам необходимо отредактировать параметры, ответственные за сертификаты.

# Публичный сертификат сервера
SSLCertificateFile    /etc/ssl/certs/server.pem
# Приватный ключ сервера
SSLCertificateKeyFile /etc/ssl/private/server.key

Теперь просто перезагрузите Apache:

sudo service apache2 restart

И если все параметры указаны верно, ваши сайты станут доступны по HTTPS.

 

Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом, то необходимо на нём пробросить данный порт.

 

Перенаправление HTTP запросов на HTTPS

Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Чтобы добиться этого можно, например, организовать перенаправление с помощью 

mod_rewrite

. Для этого сначала необходимо его активировать:

sudo a2enmod rewrite
sudo service apache2 restart

Затем изменить файл 

/etc/apache2/sites-enabled/000-default

, отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл надо добавить внутрь блока

<VirtualHost *:80>
...
</VirtualHost>

строчки:

        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть.

Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS страницу.

Ссылки