Мелочи жизни в Apache

Материал из RSU WiKi
Перейти к: навигация, поиск

Содержание

Подключаем модули в SuSE

В консоли набираем команду:

a2enmod <modname>

Или же можно поправить руками файл /etc/sysconfig/apache2 вручную добавив имена модулей в перемнную APACHE_MODULES

Передернув конфигурацию, пергружаем apache2:

SuSEconfig && rcapache2 restart

Проброс внутреннего сервера через mod_proxy в мир

ProxyRequests     Off
SSLProxyEngine    On
SSLProxyCACertificateFile conf/cacerts.crt
ProxyPreserveHost On
ProxyPass         / https://real.example.com:8050/
ProxyPassReverse  / https://real.example.com:8050/

Разрешаем из интернета смотреть только один файл

Все остальные запросы адресуем на другой сервер, ил локальной сети можно все:

<Files proxy.pac>                                                               
 order deny,allow                                                               
 allow from all                                                                 
</Files>                                                                        
 
ErrorDocument 403 http://www.example.com/                                        
order deny,allow                                                                
deny from all                                                                   
allow from 192.0.2.0/24

Как узнать опции компиляции у бинарной сборки?

В SuSE Linux:

# apache2ctl -V

How does Apache determine which of your existing vhosts is the default?

Каким образом Apache определяет, какой из ваших виртуальных хостов используется по умолчанию?

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

  • Если у вас есть существующий или новый сайт, который вы хотите сделать сайтом по умолчанию(отображаемый, когда любой из ваших доменов или IP-адресов определен запрашиваемым файлом vhosts),просто переименуйте файл vhosts этого сайта, чтобы он стал первым в алфавитном списке (добавтье "!" в начало имени файла)
  • Если у вас есть сайт, который вы также хотите отображать, когда просматривается IP, но не ваш сайт по умолчанию, просто добавьте IP в строку ServerAlias файла Vhosts этого сайта.
  • Если у вас есть особый сайт, который будет отображаться, только когда IP запрашивается браузером, создайте другой файл vhosts с вашим IP в строке ServerName вместо доменного имени.

Example:

 0-default.conf
 1-gallery.conf
 2-blog.conf

SSL

На SLES 10.

Открываем /etc/sysconfig/apache2 и правим строчки:

* APACHE_MODULES (добавляем в список "ssl")
* APACHE_SERVER_FLAGS (добавляем "SSL")

Заходим в каталог /etc/apache2/vhosts.d и копируем vhost-ssl.template в vhost-ssl.conf

cp /etc/apache2/vconf.d/vhost-ssl.template /etc/apache2/vconf.d/vhost-ssl.conf

Из консоли запускаем команды:

gensslcert
SuSEconfig
rcapache2 restart

Вуаля!

Переадресаторы

Простой переадресатор http->https на PHP

Можно добавлять в скрипты. Для верности.

<?php
if($_SERVER['HTTPS'] != "on")
{header("Location: https://".$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']);exit;}
?>

Переадресатор для разных доменов в один

Если сайт был досупен по нескольким доменным именам, и хочется чтобы все было единообразно, но не хочется убирать старые домены и исправлять ссылки везде, то можно воспользоваться следующим трюком на php:

<?php                                                                           
if (($_SERVER["HTTP_HOST"] == "www.example.net") || ($_SERVER["HTTP_HOST"] == "example.com")) {
    $gogo = "Location: http://www.example.com".$_SERVER["REQUEST_URI"];          
    header($gogo);
    exit;                                                    
} 
?>

Все ссылки на старые домены будут автоматически преобразованы на новые при переходе. Это особенно актуально при переходе с поисковых машин, проиндексировавших старые домены - пользователь попадает именно на ту страницу на какую нажимает, но уже по новому адресу.

Юникод как кодировка по-умолчанию вместо ISO-8859-1

Для SLES 9 и 10, в файле /etc/apache2/mod_mime-defaults.conf:

AddDefaultCharset UTF-8

Как снизить нагрузку на сервер, создаваемую поисковыми пауками

Можно воспользоваться директивой Crawl-delay в файле robots.txt

Если сервер сильно нагружен и не успевает отрабатывать запросы на закачку, воспользуйтесь директивой "Crawl-delay". Она позволяет задать поисковому роботу минимальный период времени (в секундах) между концом закачки одной страницы и началом закачки следующей. В целях совместимости с роботами, которые не полностью следуют стандарту при обработке robots.txt, директиву "Crawl-delay" необходимо добавлять в группе, начинающейся с записи "User-Agent", непосредственно после директив "Disallow" ("Allow").

Хоть она и не является стандартом, основные поисковые системы Google, Yandex, Live и наш Яndex ее поддерживают.

Поиск iframe-заражения на своем мини-хостинге

Повышение скорости работы сайтов с помощью htaccess Caching

Есть 2 достаточно простых и эффективных метода повышения скорости вашего всего сайта с помощью файла htaccess апача!

Первый способ - использование Header Directive. из модуля mod_headers

############################
#      300   5 MIN
#      600  10 MIN
#      900  15 MIN
#     1800  30 MIN
#     2700  45 MIN
#
#     3600   1 HR
#    86400  24 HR
#
#    86400   1 DAY
#   604800   7 DAY
#
#   604800   1 WEEK
#
#  2419200   1 MONTH
# 29030400  12 MONTH
############################

Heres the first Header example

 # MONTH
 <FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$">
 Header set Cache-Control "max-age=2592000"
 </FilesMatch>

 # WEEK
 <FilesMatch "\.(js|css|pdf|txt)$">
 Header set Cache-Control "max-age=604800"
 </FilesMatch>

 # DAY
 <FilesMatch "\.(html|htm)$">
 Header set Cache-Control "max-age=43200"
 </FilesMatch>

 # DONT CACHE
 <FilesMatch "\.(pl|php|cgi|spl)$">
 Header set Cache-Control "max-age=0"
 </FilesMatch> 

Another example using Headers

 # 3 Months
 <FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$">
 Header set Cache-Control "max-age=7257600"
 </FilesMatch>

 # 7 Days
 <FilesMatch "\.(js|css|pdf|txt)$">
 Header set Cache-Control "max-age=604800"
 </FilesMatch>

 # 10 minutes
 <FilesMatch "\.(html|htm)$">
 Header set Cache-Control "max-age=600"
 </FilesMatch>

 # DONT CACHE
 <FilesMatch "\.(pl|php|cgi|spl)$">
 Header unset Cache-Control
 Header unset Expires
 Header unset Last-Modified
 FileETag None
 Header unset Pragma
 </FilesMatch>

Второй способ - использовать ExpiresByType Directive. из модуля mod_expires

 ### turn on the Expires engine
 ExpiresActive On
### expires after a month in the client's cache ExpiresByType image/gif A2592000 ExpiresByType image/png A2592000 ExpiresByType image/jpg A2592000 ExpiresByType image/x-icon A2592000 ExpiresByType application/pdf A2592000 ExpiresByType application/x-javascript A2592000 ExpiresByType text/plain A2592000 ### expires after 4.8 hours ExpiresByType text/css A17200

Another example using mod_expires

 ExpiresActive On
 ExpiresDefault A86400
 ExpiresByType image/x-icon A2592000
 ExpiresByType application/x-javascript A2592000
 ExpiresByType text/css A2592000
 ExpiresByType image/gif A604800
 ExpiresByType image/png A604800
 ExpiresByType image/jpeg A604800
 ExpiresByType text/plain A604800
 ExpiresByType application/x-shockwave-flash A604800
 ExpiresByType video/x-flv A604800
 ExpiresByType application/pdf A604800
 ExpiresByType text/html A900 

Полезные обсуждения метода Expires можно найти на Powweb или SitePoint

См. также

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты