Czy muszę duplikować dyrektywy Virtualhost dla portów 80 i 443?
Mam długą i skomplikowaną listę dyrektyw i muszę je powielić do osobnych grup
Mój zawiera wiele reguł mod_rewrite, reguł LocationMatch, dyrektyw CGI, itp.
Również, nie mogę użyć .pliki htaccess.
6 answers
Nie możesz użyć dyrektywy include do włączenia wspólnych zasad. Tutaj
Np.:
<VirtualHost _default_:80>
...
include conf/common_rule.conf
</VirtualHost>
<VirtualHost _default_:*>
...
include conf/common_rule.conf
</VirtualHost>
<VirtualHost _default_:443>
... #SSL rules
include conf/common_rule.conf
</VirtualHost>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-11 16:55:42
Możesz użyć dowolnego # hostów i portów w jednej dyrektywie Virtualhost.
<VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>
W moim przypadku używałem.
<VirtualHost *:80 *:443>
ServerName loop.lk
....
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/local.crt
</VirtualHost>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-13 10:24:19
Przepraszam, że podrzucam taki stary post, ale żeby pomóc innym Googlerom chciałem się podzielić tym, jak sobie z tym radziłem:
Mam kilka vhostów na moim localhost, powiedzmy: localhost
, foo.com
, bar.com
Będąc stroną localhost na moim laptopie (macosx), mogłem ujść na sucho z podpisanymi certyfikatami, a zatem część ssl jest taka sama dla wszystkich vhostów...
To co zrobiłem to:
Utworzyłem katalog /etc/apache2/extra/vhosts/
.
Stworzyłem /etc/apache2/extra/vhosts/localhost.conf
:
ServerName localhost
DocumentRoot "/www/localhost"
<Directory /www/localhost>
Require all granted
</Directory>
ErrorLog "/var/log/apache2/localhost.error_log"
CustomLog "/var/log/apache2/localhost.access_log" common
A /etc/apache2/extra/vhosts/foo.conf
:
ServerName foo.com
DocumentRoot "/www/foo.com"
<Directory /www/foo.com>
Require all granted
</Directory>
ErrorLog "/var/log/apache2/foo.com.error_log"
CustomLog "/var/log/apache2/foo.com.access_log" common
A /etc/apache2/extra/vhosts/bar.conf
:
ServerName bar.com
DocumentRoot "/www/bar.com"
<Directory /www/bar.com>
Require all granted
</Directory>
ErrorLog "/var/log/apache2/bar.com.error_log"
CustomLog "/var/log/apache2/bar.com.access_log" common
I na koniec /etc/apache2/extra/vhosts/ssl.conf
:
SSLEngine on
SSLCertificateFile "/etc/apache2/ssl/server.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/server.key"
I w moim /etc/apache2/extra/httpd-vhosts.conf
:
<VirtualHost *:80>
Include /etc/apache2/extra/vhosts/localhost.conf
</VirtualHost>
<VirtualHost *:443>
Include /etc/apache2/extra/vhosts/localhost.conf
Include /etc/apache2/extra/vhosts/ssl.conf
</VirtualHost>
<VirtualHost *:80>
Include /etc/apache2/extra/vhosts/foo.conf
</VirtualHost>
<VirtualHost *:443>
Include /etc/apache2/extra/vhosts/foo.conf
Include /etc/apache2/extra/vhosts/ssl.conf
</VirtualHost>
<VirtualHost *:80>
Include /etc/apache2/extra/vhosts/bar.conf
</VirtualHost>
<VirtualHost *:443>
Include /etc/apache2/extra/vhosts/bar.conf
Include /etc/apache2/extra/vhosts/ssl.conf
</VirtualHost>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-25 13:47:34
Możesz umieścić wspólną konfigurację w osobnym pliku i dołączyć ją do obu segmentów VirtualHost. Na przykład:
<VirtualHost 192.168.1.2:80>
Include conf/common.conf
</VirtualHost>
<VirtualHost 192.168.1.2:443>
Include conf/common.conf
(put your ssl specific cofiguration stuff here ...)
</VirtualHost>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-17 21:50:26
Można również określić wspólne dyrektywy w kontenerze, a nie w samym kontenerze. To właśnie robię, głównie dlatego, że preferuję reguły mod_rewrite na poziomie katalogu zamiast na poziomie serwera, ale powinno to działać równie dobrze dla Ciebie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-24 23:11:45
Inną opcją zamiast Include
jest użycie Macro
(dzięki czemu możesz przechowywać wszystko w jednym pliku).
Najpierw Włącz moduł makra:
a2enmod macro
Następnie umieść udostępnione rzeczy w makrze i use
to z Twoich virtualhostów:
<Macro SharedStuff>
ServerName example.com
ServerAdmin [email protected]
<DocumentRoot /var/www/example>
...
</DocumentRoot>
</Macro>
<VirtualHost *:80>
Use SharedStuff
</VirtualHost>
<VirtualHost *:443>
Use SharedStuff
SSLEngine On
SSLProtocol All -SSLv2 -SSLv3
...
</VirtualHost>
Makra mogą również przyjmować parametry i być definiowane w innych plikach, które są dołączone; dzięki czemu można ich używać trochę jak funkcji i zapisać wiele duplikacji w plikach konfiguracyjnych Apache.
Zobacz tutaj po więcej szczegóły:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-17 20:21:40