Apache 2.4 + Varnish примеры конфигов виртуальных хостов

Примеры ниже приведены с действующего веб-сервера со следующей конфигурацией — Debian 8 + Apache 2.4 + MySQL 5.6 + PHP 5.6
В примерах используется порт 8080 для работы в связке с Varnish, который настроен на 80 порту. Если вы не используете Varnish — измените порт на 80 в выбранном конфиге.

Пример стандартного virtual host конфига

/путь-установки-апача/sites-available/default.conf

NameVirtualHost *:8080
<VirtualHost *:8080>
DocumentRoot /var/www
<Directory "/var/www">
allow from all
Options None
</Directory>

</VirtualHost>

Пример virtual host конфига для сайта с php

/путь-установки-апача/sites-available/php-website.conf

<VirtualHost *:8080>

DocumentRoot /var/www/php-website/
ServerName php-website.org
ServerAlias www.php-website.org

<Directory "/var/www/php-website/">
allow from all
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
</Directory>

</VirtualHost>

Пример virtual host конфига для сайта на WordPress

/путь-установки-апача/sites-available/wordpress.conf

<VirtualHost *:8080>
DocumentRoot /var/www/wordpress.org
ServerName wordpress.org
ServerAlias www.wordpress.org

<Directory "/var/www/wordpress.org">
allow from all
Options +FollowSymLinks

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

</Directory>

</VirtualHost>

Пример virtual host конфига для wordpress сайта доступного с нескольких доменов

/путь-установки-апача/sites-available/multidomain.conf

<VirtualHost *:8080>
DocumentRoot /var/www/domain1.org
ServerName domain1.org
ServerAlias *.domain1.org domain2.org *.domain2.org

<Directory "/var/www/domain1.org">
allow from all
Options +FollowSymLinks

#Разрешает cross-origin доступ для дополнительного домена для указанных файлов
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$">
Header add Access-Control-Allow-Origin "http://domain2.org"
</FilesMatch>
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

</Directory>

</VirtualHost>

Пример virtual host конфига для сайта с Multisite WordPress

/путь-установки-апача/sites-available/multisite.conf

<VirtualHost *:8080>
DocumentRoot /var/www/domain1.org
ServerName domain1.org
ServerAlias *.domain1.org domain2.org *.domain2.org

<Directory "/var/www/domain1.org">
allow from all
Options +FollowSymLinks
                           
#Используйте ifmodule только на multisite где все сайты используют одну тему и плагины. Если нет - удалите блок.
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$">
Header add Access-Control-Allow-Origin "http://domain1.org"
Header add Access-Control-Allow-Origin "http://domain2.org"
</FilesMatch>
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress
</Directory>

</VirtualHost>

Пример virtual host конфига для сайта на joomla

/путь-установки-апача/sites-available/joomla.conf

<VirtualHost *:8080>
DocumentRoot /var/www/joomla.org
ServerName joomla.org
ServerAlias www.joomla.org

<Directory "/var/www/joomla.org">
allow from all
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
## End - Joomla! core SEF Section.
</Directory>

</VirtualHost>

Пример virtual host конфига через SSL c reverse proxy и Varnish

/путь-установки-апача/sites-available/ssl.conf

<IfModule mod_ssl.c>

<VirtualHost *:443>
DocumentRoot /var/www/wordpress.org
ServerName wordpress.org
ServerAlias www.wordpress.org

#перенаправляет https traffic в varnish на порт 80 и отправляет пользователю ответ от varnish
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:80/
ProxyPassReverse / http://127.0.0.1:80/
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Proto "https"

#настройки ssl
SSLEngine On
SSLCertificateFile /etc/ssl/certificate.crt
SSLCertificateKeyFile /etc/ssl/private.key
SSLCACertificateFile /etc/ssl/ca_bundle.crt

#разрешает http версии сайта доступ к файлам доступным на https.
#такой же блок нужно будет вставить и в конфиг без SSL
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$">
Header add Access-Control-Allow-Origin "http://wordpress.org"
</FilesMatch>
</IfModule>

<Directory "/var/www/wordpress.org">
allow from all
Options +FollowSymLinks
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
</Directory>

</VirtualHost>

</IfModule>

Эта статья — перевод моей же статьи с личного блога https://windowspros.ru/apache-2-4-varnish-virtual-host-config-examples/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...