Apache2 VirtualHost IfPort?

Je voudrais faire un tel hôte virtuel:

<virtualhost *:443="" *:80="">
<ifport 443="">
SSLEngine On
...
</ifport>

...
</virtualhost>

Donc, si l'accès à l'hôte a été effectué à travers le port 443, Je veux ajouter des fonctionnalités supplémentaires. Puis-je y parvenir ou j'ai besoin de la diviser sur 2 Hôte virtuel?
Invité:

Babette

Confirmation de:

j'utilise

mod_macro

Pour résoudre ce problème sur un serveur avec de nombreux domaines différents ... Installer le module (diffère en fonction du système d'exploitation / Distribution), Puis configurez quelque chose comme ceci:

LoadModule macro_module         libexec/apache22/mod_macro.so

<macro $host="" vhost="">
<virtualhost *:80="">
DocumentRoot /usr/local/www/$host/data
ServerName $host
ServerAlias *.$host

ScriptAlias /cgi-bin/ "/usr/local/www/$host/cgi-bin/"
IncludeOptional etc/apache22/vhosts/$host
</virtualhost>
</macro>
<macro $host="" vhostssl="">
<virtualhost *:80="">
DocumentRoot /usr/local/www/$host/data
ServerName $host
ServerAlias *.$host

ScriptAlias /cgi-bin/ "/usr/local/www/$host/cgi-bin/"
IncludeOptional etc/apache22/vhosts/$host
</virtualhost>
<virtualhost *:443="">
DocumentRoot /usr/local/www/$host/data
ServerName $host
ServerAlias *.$host

SSLEngine on
SSLCertificateFile /usr/local/www/$host/ssl/$host.crt
SSLCertificateKeyFile /usr/local/www/$host/ssl/$host.key

ScriptAlias /cgi-bin/ "/usr/local/www/$host/cgi-bin/"
IncludeOptional etc/apache22/vhosts/$host
</virtualhost>
</macro>

Use VHostSSL example.com
Use VHost example.net

Tout simplement ajoute un nouveau domaine; Toute configuration spécifique au domaine est placée dans le fichier fourni.

Dominique

Confirmation de:

Une autre option pour éviter la duplication - Enregistrez la configuration d'hôte virtuelle dans un fichier spécifique et tirez-le avec include:


/etc/path/to/config/example.com.conf

:

ServerName example.com.conf
DocumentRoot /var/www/something
# Any other config you want to apply to both vhosts

Et votre fichier hôte virtuel:

<virtualhost *:443="">
SSLEngine on
# Other SSL directives
Include /etc/path/to/config/example.com.conf
</virtualhost>
<virtualhost *:80="">
Include /etc/path/to/config/example.com.conf
</virtualhost>

Catherine

Confirmation de:

Utiliser la décision de John, je l'obtiens

Apache 2 is starting ...
AH00526: Syntax error on line 53 of .../httpd-vhosts.conf:
SSLEngine not allowed here

Comme John dit, le meilleur moyen - ont 2 hôte virtuel; Mais mon code hôte virtuel était composé de plus de 150 Rangée (Beaucoup de procurations inverse), Puisque je ne voulais pas avoir 2 Chaque code (et très long fichier de configuration) En conséquence, je l'ai fait que cela fonctionne:

1. Créez un hôte virtuel pour un hôte virtuel sans SSL.

2. Créez un autre hôte virtuel et inversez le proxy à la première hôte virtuelle.

<virtualhost *:443="">
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "...cert.crt"
SSLCertificateKeyFile "...server.ssl.key"
... (any ssl specific config)

ProxyPreserveHost On
ProxyPass / [url=http://localhost:80/]http://localhost:80/[/url]
ProxyPassReverse [url=http://localhost:80/]http://localhost:80/[/url] [url=http://yourdomain.com/]http://yourdomain.com/[/url]
</virtualhost>

Ce n'est pas du tout bon ni pratique pour la solution de performance, mais si la cause de la réticence 2 Les hôtes virtuels sont d'empêcher 2 Versions de toutes les configurations d'hôte virtuel (Ce qui signifie changer 2 lignes à chaque fois que vous voulez changer quelque chose), Ça marche.

Blanche

Confirmation de:

Regarde Apache

If

Structurer et gérer la requête. Voir
http://httpd.apache.org/docs/2.4/expr.html
et
http://httpd.apache.org/docs/2.4/expr.html
. Vous pouvez faire quelque chose comme:

<if "="" "%{server_port}="443">
# Do stuff
</if>

Quant à votre

VirtualHost

, Je ne vois pas une telle décision dans la documentation Apache2. Voir
http://httpd.apache.org/docs/2 ... 3port
Et essayez votre option: Apache2 utilise des utilisations similaires pour différentes adresses IP au lieu de différents ports (
http://httpd.apache.org/docs/2 ... extra
).

Je recommanderais toujours d'utiliser 2 Différents hôtes virtuels, ce qui est beaucoup plus clair. Vous aurez besoin de deux

NameVirtualHost

et

Listen

dans votre

apache2.conf

Fichier, dans tous les cas.

Éditer

Je n'ai pas compris que cette décision provoque réellement une erreur, mais revenons au concept lui-même ... Écoute 80 ou 443 En fait, sans problèmes. Apache2 Je serais volontiers fournir une solution élégante pour cela sinon ... chiffrement. Apache2 a été développé par C, Et outre les flux et les fourches, il utilise des prises. DANS C pour utilisation SSL L'initialisation des composants est requise OpenSSL, et certains travaillent autour de la prise de base pour la vente de tout SSL. Vous recherchez une solution simple, mais tout le mécanisme est compliqué ... C'est pourquoi vous ne pouvez pas activer SSL Sur l'hôte virtuel de base: HTTP et HTTP - Ce sont des composants différents et dans la méthode Apache2, J'ai peur qu'il n'y ait pas de concept d'héritage entre la première et la seconde.

Pour répondre aux questions, connectez-vous ou registre