Sziasztok a következő a problémám.
Van egy Ubi szerver 12.04 azon fut egy apache2. Azt akarom megoldani, hogy mivel ezen a hálón több szerver is van kívülről egy bizonyos portcímen lehessen csak elérni de belülről ez egy szabványos 443-as port legyen. Vagyis ha beírom a böngészőmbe, hogy https://x.y.hu:8080 akkor a belső szerveren lévő weboldal jelenjen meg. De ez még nem minden ezen a szerveren több weboldal is van névvel szétválasztva vagyis ha azt írom be, hogy https://xxx.yyy.hu:8080 akkor a másik oldal jöjjön be. Addig el tudtam jutni, hogy az egyik oldal bejön szépen de a másik az istenért nem akar menni kívülről belülről nagyon szépen megy a dolog minden gond nélkül. Szerintem az első oldal is csak azért, mert az a default.
Az első virtualhost az így néz ki:
< IfModule mod_ssl.c >
< VirtualHost _default_:443 >
ServerName default
ServerAdmin webmaster@localhost
DocumentRoot /var/www
< Directory / >
Options FollowSymLinks
AllowOverride None
< /Directory >
< Directory /var/www/ >
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
< /Directory >
...
< /VirtualHost >
< /IfModule >
A másik az pedig így:
< IfModule mod_ssl.c >
< VirtualHost *:443 >
ServerName xxx.yyy.hu
ServerAdmin info@localhost
DocumentRoot /home/a
< Directory /home/a >
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
< /Directory >
...
< /VirtualHost >
< /IfModule >
Segítségeteket előre is köszönöm mindenkinek.
További szép napot.
Hozzászólások
Ebben a felallasban nem is fog menni. Name base helyett ip base kellene ebben az esetben. Ezt olvasd át és javítsd a konfigokat ennek megfelelően. (természetesen, működik 1 ip-re is tobb névvel.)
http://httpd.apache.org/docs/2.2/vhosts/ip-based.html
Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.
Az igazság az, hogy belülről müxik rendesen gond nélkül. A key kész és rendesen megy is.
Először is tisztázzunk pár dolgot!
- 1 IP-n 1 SSL-es weboldal lehet, ha több kell, több IP kell a gépre! Te kapásból egy 1 IP-n akarsz 2 weboldalt futtatni!
- Az SSL-es kapcsolathoz azért egy pár dolog hiányzik a config file-ból
Mindent törölj ki a /etc/apache2/sites-enabled könyvtárból. Generálnod kell egy cert-et a gépedre. Ez egy self-signed cert lesz, azaz saját magad aláírt, amit a böngészők figyelmeztetéssel nyugtáznak. Vagy veszel egyet, ami hivatalos cert és nem hisztiznek a böngészők.
Minden egyes oldalt külön konfig file-ba rakjál az áttekinthetősége miatt! Mindez látványosan:
Ezt mentsd el valami file-ba a /etc/apache2/sites-enabled -ba
< VirtualHost *:80 >
DocumentRoot /ahova/akarod
ServerName valami
...
< /VirtualHost >
Ha sima 80-as port-os cuccot akarsz (http://valami) ezt meg egy másik file-ba
http://en.wikipedia.org/wiki/Server_Name_Indication
--
Mint írtam, lehet 1 ip vel is. (Régebben valóban nem volt ez a feature, de a kor halad.)
http://en.wikipedia.org/wiki/GnuTLS
http://isp-control.net/forum/printthread.php?tid=4696
http://www.ezylinux.com/en/enable-multiple-ssl-vhosts-and-certificates-…
Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.
Lehet nem írtam le rendesen. A beállítások a belső oldalról tökéletesen müködik minden oké. Megy a hhtps és minden más is. innen nincs gond. A dns-be beregisztráltam a jó webcímet és ha így hívom https-el akkor megy. Csak kintről nem megy ha a 8080-as porton próbálkozom.
Ha kintről és bentről is 8080-as porton akarod elérni, akkor minek elbonyolítani a 443-as portal és a forwardal?
Az apache-nek mond meg hogy figyeljen a 8080-as porton is és a virtualhost szekcióknál is állítsd be ezt a portot.
Köszi de pont ez a gond, hogy bent a cégnél a micike titkárnőnek és egyéb embereknek nem igazán tudom elmagyarázni, hogy a 8080 as portot hogy kell beírni a webcím mellé. De kintről pedig a 443-as port másik szervert kell hogy mutasson. Ez afféle szeretném a belső weboldalt kintről is elérni dolog anélkül, hogy a belsőhálón bármiféle változás érzékelhető lenne.;-)
A megfejtés: < VirtualHost *:8080 >
A HTTP protokoll esetében szegény apache nem fogja tudni, hogy melyik domain-re érkeztél (nameg forward után hogy melyik porton) hanem ezeket mind-mind a http fejlécből szedi ki. Mivel nincs bejegyzés a külső domain, külső portra, ezért a default oldalt fogja behozni (default).
Hozz létre egy bejegyzést, hogy tudja, azokat a kéréseket hova kell raknia
// Happy debugging, suckers
#define true (rand() > 10)
Ez így minden probléma nélkül megoldható.
Konfigold fel az apache-t 443-ra ahogyan az szokás. Aztán egy választott portot pl 8080-as forwardolj/masquaradolj be a routeren, valahogy így: 8080:publicIP:443.
Az apache konfigban azt kell ellenőrizni, hogy a beérkező http kérésben mi szerepel host-nál és azt hogyan tudja az apache értelmezni.
Linuxscripting
"Addig el tudtam jutni, hogy az egyik oldal bejön..."
Gondolom kintről a külsó ip-re jövö 8080 port forgalmát irányítottad a belső ip 443 portjára.
Következmény:
"< VirtualHost _default_:443 >
ServerName default
..."
Ez a host fog válaszolni...
Ahhoz, hogy úgy működjön ahogy szeretnéd x.y.hu és xxx.yyy.hu-nak is regisztrált domainnak kellene lennie és a külső ip-re mutatnia - ami mivel belső hálót írtál - nem feltétlenül így van.
Tipp: linuxos kliens gépen /etc/hosts file-ban minkét domain v host név összerendelés a külső ip-vel. Ha Windows használsz a Windows\system32\drivers\etc\hosts file-t keresd.
Tehát szerinted csak annyi a gond, hogy a ppoe interface ipcímét bele kell írnom a host filébe a weboldal neve mellé? Jól értelmeztem?
Szerintem igen, de nem a szerver gépen hanem a kliensen... Most olvasom:
"A dns-be beregisztráltam a jó webcímet és ha így hívom https-el akkor megy"
Ha ez a helyi -belső hálón levő- dns szerinted külső címről érkező kérésnél honnan tudja az apache, hogy meyyik host válaszoljon...Jobb híjján a default...
Én leszek az első aki elhiszi Csabinak, hogy az Apache jól van beállítva. Én egy ngrep-el lehallhatnék egy kérés belülről és kivülről, majd ssldump-al belenéznék, hogy mi a különbség.
--
Kristof
Köszi a tippet de azt hogy kell? Légyszi segíts.
Megmondom neked, az lesz a különbség, hogy más a http fejlécben a host név és a port (amit fentebb is leírtam, csak baszik rá;]). Az apache meg szarul van beállítva, hozzá kell adnia a külső hostot és portot is a virtualserver listához, ő nem fogja kitalálni helyetted hogy az ugyanaz.
// Happy debugging, suckers
#define true (rand() > 10)
Tehát ezek szerint elég ha másolok a müködő virtual host ból mégegyet és csak annyit változtatok rajta, hogy nem a 443 as hanem a 8080 ra reagáljon.
meg azt a hostot adod meg neki, amivel kívülről hívod
// Happy debugging, suckers
#define true (rand() > 10)
Tehát a *:8080 nem jó, hanem xxx.yyy:8080 kell a virtuál hostba?
*:443 is jó.
Ne a lokális portból indulj ki, hanem abból ami a HTTP fejlécben szerepel (host-al egyetemben). A webszerver a fejlécben szereplő dolgok alapján válaszol, ha külső host-al/port-al, akkor azt is fel kell venni (ő nem fogja tudni kitalálni magától)
// Happy debugging, suckers
#define true (rand() > 10)
+1
Hali,
A problémát nagy valószínűséggel az okozza számodra, hogy a https-hez egy IP-d van és ezen kell név alapján virtual hostokat szétválasztani. Ezen segíthet számodra az apache SNI, vagy összegyűjtöttem néhány linket a témában itt.
A másik probléma pedig az, hogy a névfeloldás máshogy kell, hogy menjen az internet irányából, illetve a belső hálóról. Ez utóbbi problémát egy belső DNS szerverrel (dnsmasq, vagy bind9 a keményebbeknek) lehet kezelni. Több helyen is üzemel ugyanilyen elven rendszerem.
--
kincza
Köszi. Az igazság az, hogy azért írtam a linux kezdő topikba ezt a problémámat,mert nem vagyok profi és nem igazán tudok mit kezdeni a varázsszavakkal. Jó lenne ha valaki úgy segítene ha ad egy ötletet legalább leírja, hogy mit kell tennem vagy mit ért alatta. Kérlek benneteket, hogy ha lehet picit részletesebben az ötleteket, mert a varázsszavak nekem nem mondanak semmi. Le tudom tölteni fel tudom telepíteni el tudom olvasni a MAN-t de attól még nem tudom kitalálni ki mire gondol ha nem ír konkrétumot. Köszönet.
Ha csak egyedül használnád kintről én maradnék a host files megoldásnál ( http://hup.hu/node/125953#comment-1628314 ).
Ha belső hálón működik ne bánts a szerver konfigot...
Még egyszer: kliensen hosts file-ba "szerver_ppoe_ip x.y.hu xxx.yyy.hu"
sor felvesz.
böngészőbe https://szerver_ppoe_ip:8080 -ra (és https://x.y.hu:8080 -ra) x.y.hu válaszol (default...)
https://xxx.yyy.hu:8080 -ra a másik host kell válaszoljon...
Ha csak sima port forward van 8080-ról 443-ra akkor 2.-ra is x.y.hu válaszol ha külső ip-hez xxx.yyy.hu név a dns-ben...
2 lehetésges megoldás:
a:
szerver oldalon is összerendelni a külső ip-t és a neveket.
b:
sima port forward helyett külső ip tcp 8080-ra érkező forgalom natolása a belső ip 443 portjára...
Szia az igazság az,hogy destination natot használok nem port triggeringet. Vagyis a b: pontot ha jólértelmezem akkor azt csinálom amit te írtál és még mindig nem az igazi.
+1