W Apache2 na Ubuntu mam witrynę słuchającą na 80, a teraz chcę dodać SSL. Czy istnieje sposób, aby włączyć SSLEngine dla portu 443, więc nie muszę kopiować całego bloku VirtualHost?
Kiedy to zrobię:
Listen 80
Listen 443
NameVirtualHost *
<VirtualHost *>
SSLEngine On
... a bunch more lines...
</VirtualHost>
Włącza SSLEngine dla portu 80. Czy istnieje sposób, aby użyć tylko jednego bloku VirtualHost i tylko włączyć SSLEngine dla portu 443? Więc mogę zrobić coś takiego?
Listen 80
Listen 443
NameVirtualHost *
<VirtualHost *>
<IfPort 443>
SSLEngine On
</IfPort>
... a bunch of lines I don't want to copy into another VirutalHost block...
</VirtualHost>
apache-2.2
mod-ssl
dar
źródło
źródło
Jak wspomniałem w innym pytaniu dotyczącym stackoverflow ( /programming/679383/do-i-have-to-duplicate-the-virtualhost-directives-for-port-80-and-443/52375167# 52375167 ):
Inną opcją zamiast użycia
Include
jest używanieMacro
(abyś mógł zachować wszystko w jednym pliku).Najpierw włącz moduł makr:
Następnie umieść swoje udostępnione rzeczy w makrze i
use
na wirtualnych hostach:Makra mogą również przyjmować parametry i być definiowane w innych dołączonych plikach; dzięki czemu możesz używać ich trochę jak funkcji i zaoszczędzić dużo duplikacji w plikach konfiguracyjnych Apache.
Zobacz tutaj po więcej szczegółów:
https://httpd.apache.org/docs/2.4/mod/mod_macro.html
źródło
Możesz umieścić ustawienia katalogu w
<Directory>
bloku poza dowolnymi<VirtualHost>
blokami. To zastosuje je na wszystkich wirtualnych hostach, ale tylko w określonej ścieżce.źródło