Vysvetleni nastaveni APACHE

Ing. Pavel PaJaSoft Janoušek PaJaSoft na FoNet.Cz
Čtvrtek Únor 17 09:22:05 CET 2005


	Zdravím,

Michal <mailto:michaels na centrum.cz> wrote:
> Můžete mi nějaká ochotná duše vysvětlit, jaký je rozdíl mezi
> Port 8001

	"primární" port, na kterém Apache poslouchá...

> Listen 8001

	... a také může poslouchat na mnoha jiných portech...:-)

> BindAddress *:8001

	Tento zápis neznám a nepoužívám, používám pro případ, kdy má server
více síťových karet nebo virtuálních síťovek, prostě kdy má více IP adres
naleznutelných v systému a chci, aby poslouchal JEN na vyjmenované škále
(typicky - mám 2 veřejné IP adresy, na každé jiná instalace Apache...) IP
adres => BindAddress aaa.bbb.ccc.ddd

> <Virtualhost *:80> a <Virtualhost _default_:80> byť jsem to na
> apache.org našel, ale mě toto připadá jako stejný zápis.

S virtual hostama jsem se trápil hodně dlouho a osobně přiznávám, že teprve
velmi nedávno mi definitivně svitlo, protože Apache 1.x se chová výrazně
jinak než Apache 2.x, ba co více, to co funguje a bylo možné v Apache 1.x
NEFUNGUJE a Apache 2.x dokonce křičí...

Špatná konfigurace zcela funkční pod Apache 1.x:

<BLBE>

NameVirtualHost aaa.bbb.ccc.ddd

<VirtualHost aaa.bbb.ccc.ddd:80>
	ServerName AAA
</VirtualHost>
<VirtualHost aaa.bbb.ccc.ddd:80>
	ServerName BBB
</VirtualHost>
<VirtualHost aaa.bbb.ccc.ddd:443>
	ServerName AAA
</VirtualHost>

</BLBE>

	Dospěl jsem k názoru, že pro valnou většinu konfigurací (= NameBase
virtualy) je vhodné udělat následující (plně funkční jak v Apache 1.x, tak
2.x):

a) mám pouze HTTP:

NameVirtualHost *

<VirtualHost *>
	ServerName A
	.
	.
<VirtualHost>
<VirtualHost *>
	ServerName B
	.
	.
<VirtualHost>

.
.
.

b) mám HTTP i HTTPS:

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:443
	ServerName A
	SSLEngine on
+ další SSL direktivy, několik jich je možno dát přímo do mod_ssl modulu,
takže jsou pro všechny virtuály stejné (Random seed, SSLv3 + TLSv1...)
	.
	.
<VirtualHost>
<VirtualHost *:80>
	ServerName A
	.
	.
<VirtualHost>
<VirtualHost *:80>
	ServerName B
	.
	.
<VirtualHost>
.
.
.

	Můžete dokonce udělat i více <VirtualHost *:443>, ale připravte se,
že bude fungovat skoro vše (nějaké postraní efekty, které by možná
bezpečnost mohly nabořit jsem zcela neřešil, např. klientské certifikáty
vůbec... - CA jsem nekonfiguroval, mne stačíl zatím vždy HTTP přenos
tunelovaný SSL), akorát v potaz se bude brát POUZE první certifikát (tedy
první *:443), zatímco virtuály se pak skutečně budou chovat tak jak byste
čekal... - samozžejmě že se celou dobu bavíme o NameBased virtuálech,
IP-based je o trochu něčem jiném (a pro plnohodnotné SSL skutečně potřebné)

	Prostě a jednoduše NameVirtualHost <ident> je pouze indetifikátor
(asi HASH), který se použije v <VirtualHost <ident>> ale jiný technický
význam nemá...

> A poslední věc. Chci rozjet virt. webservery jak pod SSL tak i jen na
> 80. Musím vytvořit <Virtualhost> 2x se stejnými - jednou s
> SSLengine ON a jednou
> jako normální virt. webserver nebo se to dá nějak dát do jednoho
> <virtualhost> ? 

	Také jsem se touto myšlenkou zabýval, možná mylně jsem srozuměn s
tím, že je nutné mít ty virtuály dva a také to tak všude konfiguruji a na
problém jsemnenarazil, ale jak říkám, možná existuje elegantnější a
jednodušší postup, já jsem holt stará škola...:-)

-------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft)             FoNet, spol. s r. o.
Technicka podpora, Intranet/Internet     Sokolova 67, 619 00 Brno
E-mail: mailto:Janousek na FoNet.Cz         Tel.: +420  5  4324 4749
WWW:    http://WWW.FoNet.Cz/           E-mail: mailto:Info na FoNet.Cz
-------------------------------------------------------------------  



Další informace o konferenci Linux