OSX Server - Jira futtatása SSL hálózaton

OSX Server 5.2 használok. Most van folyamatban a Jira telepítése és szeretném, ha a külvilág felé https kapcsolattal menne. A szerver noip dynamic dns-sel van beállítva az itthon lévő szerverre. Igazából az OSX Server által készített tanúsítvány nekem jó is, biztos nem akarok majd fizetni külön tanúsítványért :)
Szóval amit szeretnék pontosan:

  1. Bejön bármilyen weboldal kérés (a 80-as porton) a regisztrált dns címre (most domain.com-ként hivatkozok rá), akkor az legyen átirányítva a https ugyanilyen kérésre.

  2. Az összes domain.com/jira (tehát a /jira a fontos) át legyen irányítva a 8080-as portra (proxyval).

Tehát az utolsó lenne főleg lényeg. A /jira kéréseket kellene lekezelni. Rájöttem közben, hogy az OSX Server alatt futó apache alapból proxyként át tudja irányítani a forgalmat (Jira dokumentációban is benne van). Tehát ahelyett, hogy http://domain.com:8080 használnék, át irányítja a forgalmat úgy, hogy http://domain.com/jira. Ez működik is (működött, míg szét nem barmoltam mindent :D). Most ugyanezt szeretném igazából csak úgy, hogy először a http://domain.com/jira forgalmat irányítsa át https://domain.com/jira-ra, majd proxyként kommunikáljon http://domain.com:8080/jira (direkt nem https) módon.
A Jira beállítva arra, hogy /jira legyen az alapértelmezett elérési út.

Az OSX Server-ben beállítva a ddns cím, hogy azon keresztül elérhető a szerver. Ez létrehozott egy alapértelmezett DNS szolgáltatást, hogy a local hálózaton ne kelljen kimennie a forgalomnak.
A Websites oldalon meghagytam a két alapértelmezett beállítást a 80-as és 443-as portra. Mindkét portnál beállítottam aliast a ddns címre. A 80-as portról az alapértelmezett beállítás szerint átirányít a 443-as portra.

Tehát a következő dolgok történnek jelenleg:

  • Ha beírom a http://domain.com címet a böngészőbe, akkor átirányít https://domain.com/xcode címre. Ez persze nem baj, mert az Xcode szerver aktív és még nincs weboldal konfigurálva. De már itt átirányít https-re.
  • Ha beírom, hogy http://domain.com/jira, akkor kiírja kb, hogy a weboldal ki van kapcsolva, egy adminisztrátor be tudja kapcsolni az oldalt. Ezt kellene átirányítani https-re majd a 8080-as porton proxy-val kommunikáltatni az oldallal.
  • Ha beírom, hogy http://domain.com:8080, akkor nem ír ki semmit (ez sem is baj), mert
  • Ha beírom, hogy http://domain.com:8080/jira, akkor megjelenik szépen a Jira és működik is.

Szóval a proxy beállítást a /Library/Server/Web/Config/apache2/sites mappa alatt lévől sudo nano 0000_127.0.0.1_34580_.conf és sudo nano 0000_127.0.0.1_34543_.conf-ban végzem. Az első-höz nem nyúltam, azt az OSX Server csinálta, a másikhoz pedig hozzáadtam a következő sorokat (Jira dokumentáció alapján csináltam):

    ProxyRequests Off
    ProxyVia Off
    <Proxy *>
    </Proxy>
    ProxyPass /jira http://domain.com:8080/jira
    ProxyPassReverse /jira http://domain.com:8080/jira

Összegezve amit szeretnék:

http://domain.com/jira -> https://domain.com/jira -> (proxy) -> http://domain.com:8080/jira

Korábban egyszer már működött az, hogy legalább a http://domain.com/jira proxyn keresztül kommunikált a Jira szerverrel a 8080-as porton. De már úgy átállítottam mindent, hogy semmi sem működik :)

Ok, kérdés tárgytalan már, mert megoldottam. Igazából én voltam a hülye, mert az apache conf-ban jelezni szerettem volna kommenttel, hogy ezt a jira miatt csinálom és nem vettem észre, hogy emiatt nem működik. Megnéztem az apache error logot és akkor láttam a bejegyzést, hogy a kommentekre panaszkodik.
Szóval akkor az elgondolásom helyes volt, hogy az alap 80-as portot nem bántottam, meghagytam azt az átirányítást, amit a server csinált és a 443-as porthoz simán hozzáadtam a proxy-s bejegyzést, amit fentebb írtam. Innentől kezdve működik minden úgy, ahogy elterveztem.
Annyi hibát leszámítva, hogy jelenleg a 8080-as porton lehet kommunikálni a Jirával közvetlenül http porton és nem kerül át https-re a forgalom. Persze nem árulom majd el senkinek sem ezt a lehetőséget :D.

Ha azt akarod, hogy ne legyen elerheto a 8080on tavolrol, akkor bindeld 127.0.0.1-re es a proxypass/proxypassreverse is 127.0.0.1 legyen.

Ezt megpróbáltam tegnap, de akkor úgy nem működött. Szóval átírtam, hogy a jira csak a 127.0.01 címen kommunikáljon. Valamint a proxynál is átírtam, hogy 127.0.0.1 legyen. De így a weboldal egyáltalán nem akart betölteni.

Akkor valamit nem jol irtal at. Ha a JIRA listenel a 127.0.0.1:8080 -on, akkor ez lathato osx esten pl “lsof -n | grep LISTEN” -nel vagy akar egy telnettel is ellenorizheto. Az apache pedig tud 127.0.0.1-re proxyzni, tehat mindenkeppen mennie kell. Melyik resznel allt meg a dolog? Mar a JIRA sem ment localhoston?

Ezt most hirtelen nem tudom, csak kipróbáltam hátha megy, egyből nem ment és visszaállítottam mindent. Lehet megpróbálom még egyszer majd. Viszont most elindul a Jira, de nem tudom létrehozni az admin felhasználói fiókot, mert hibát ír ki, azt próbálom most kijavítani. Amúgy a napokban elég sok hasonló bejegyzés jött elő, szóval lehet megpróbálom egy korábbi verziót felrakni a szerverből és azt upgradelni a legfrissebbre, hátha megy…

Közben rájöttem, hogy eleve hülye voltam. Korábban kipróbáltam egy próba változatot, akkor még nem volt dynamic dns és csak IP alapján csatlakozott hozzá az ismerősöm. Emiatt kinyitottam neki a 8080-as portot a szerver felé. Csak erről elfelejtkeztem azóta. Szóval így, hogy kivettem a port átirányítást, így már nem érhető el a 8080-as porton.

Egyébként még ezelőtt megpróbáltam átállítani a localhostra az apache-ot és a jirát is, most működött is, de ugyebár továbbra is működött a fenti hiba miatt. De ekkor még nem volt lekorlátozva a localhostra. Szóval találtam még pár napja egy leírást, hogy mit kell berakni a korlátozáshoz, tehát ehhez hasonló…:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1,192.168.0.1,192.168.50.*" /> 

Ha ezt megadtam neki, akkor egyáltalán nem akart menni (localhoston nem néztem).

De nem is ez a lényeg, hanem, hogy enélkül a sor nélkül elindulás után a Jira kiírt egy figyelmeztetést, hogy localhost kéréssel fut a rendszer, és mivel megkapja a host információt a böngészőből és nem egyezik, ez így hibához vezethet.
Szóval megint visszaállítottam mindent és akkor jöttem rá a portnyitási hibára. A lényeg, hogy most ok :)

2 kedvelés