Configurare IIS 7 Reverse Proxy per la connessione a TeamCity Tomcat


12

Abbiamo un server web IIS 7 configurato e vorremmo creare un proxy inverso per un'installazione TeamCity utilizzando Tomcat sullo stesso computer.

Il sito del server IIS è https://somesitee vorrei che TeamCity sembrasse https://somesite/teamcityreindirizzare http://localhost:portnumber.

Ho installato l' estensione di riscrittura URL IIS e il routing richieste applicazioni per provare a configurare un proxy inverso ma non riesco a farlo funzionare.

La risposta più vicina che ho trovato è una vecchia domanda StackOverflow: /programming/331755/how-do-i-setup-teamcity-for-public-access-over-https
che purtroppo non ha alcun funzionamento esempio.

Ho cercato un po 'ma non riesco a trovare un esempio pertinente.

Qualsiasi aiuto è apprezzato!


Ho anche notato che usando questo metodo alcuni pulsanti in TeamCity portano a "http" invece di "https" ... forse non c'è un buon modo per farlo. Mentre può essere riscritto, ciò significa che la prima chiamata con tutti i dati viene inviata in testo normale? hmmm
tofutim,

Risposte:


12

Dopo aver trascorso circa 4 ore a provare a configurare SSL per TeamCity (e utilizzando le risposte in questo thread), sono riuscito a farlo funzionare utilizzando l'opzione server farm.

  • Ho configurato una server farm TeamCity che includeva il mio server TeamCity su 127.0.0.1 utilizzando la porta 8080 e ho consentito alle regole di routing dell'applicazione di creare una regola di routing della server farm corrispondente.

  • Ho quindi creato un sito Web chiamato TeamCitySecureProxy che ho configurato con un certificato autofirmato. Sulle associazioni ho configurato solo https / 443 (no http / 80).

  • La parte che mi mancava: - Ho quindi fatto clic sul nodo "TeamCity" in "Server Farms" in IIS, ho scelto "Proxy" dal riquadro "Server Farm" e ho selezionato "Host di riscrittura inversa nelle intestazioni di risposta".

Ora ho un end-point sicuro per accedere alla mia semplice installazione di TeamCity http.


1
Ottengo "502 - Il server Web ha ricevuto una risposta non valida mentre fungeva da gateway o server proxy." - L'hai riscontrato durante il tuo viaggio e, in tal caso, come l'hai risolto?
mcintyre321,

Questa soluzione ha funzionato per me. L'host di riscrittura inversa è necessario, altrimenti alcuni pulsanti portano a http anziché a https. Grazie Warren
tofutim,

Ci sono alcuni problemi con il server nuget in questo scenario. :(
tofutim

1

Puoi anche usare un connettore per farlo.

C'è il vecchio connettore ISAPI (redirector) disponibile direttamente da Apache o ce n'è uno nuovo disponibile da RiaForge (questo sembra più facile da avviare).

http://tomcatiis.riaforge.org/


1
che dire dei *.jarfile? L'ho installato sul mio IIS 7.5, ma serve solo i *.jspcontenuti ... :( Ho un vaadin-6.6.2.jarfile nella radice della mia webapp distribuita. Penso che BonCode AJP Connector gestisca solo JSP, posso vedere Boncode-Tomcat-JSP-Handlerun'opzione "Mapping gestori" di IIS, ma non è impostato ciò che dovrebbe essere fatto con i *.jarfile.
Sk8erPeter,

1

Assicurarsi che il proxy ARR sia abilitato nella GUI di IIS. Probabilmente vuoi preservare l'intestazione dell'host (potrebbe essere necessario modificare manualmente applicationHost.config o utilizzare appcmd per impostarlo) e invertire anche la riscrittura dell'host nelle opzioni di intestazione della risposta abilitate, quindi il browser invia richieste e vede le risposte che corrispondono al Host certificato SSL.

  1. Sito IIS su 443 (e 80 probabilmente?) - ascolto di tutte le richieste (non specificare il nome host)
  2. guarda tutti i percorsi in arrivo: abbina l'URL (.*)
  3. cercare il percorso TeamCity, preservare il resto del percorso: condizioni {URL} corrispondenti^teamcity(/.*)?
  4. riscrivi con percorso preservato: riscrittura dell'azione, http://localhost:port/{C:1}
  5. aggiungi querystring selezionata
  6. e interrompere l'elaborazione di ulteriori regole probabilmente verificate

Penso che dovrebbe farlo.

<rule name="Demo Rule" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{URL}" pattern="^teamcity(/.*)?" />
    </conditions>
    <action type="Rewrite" url="http://localhost:8080/{C:1}" />
</rule>

0

L'ho appena fatto da solo e ho appena pubblicato un blog al riguardo.

Sembra che tu abbia installato tutti i requisiti, ora devi solo configurare il server:

http://bronumski.blogspot.com/2010/10/host-teamcity-in-iis7.html


Nessuna gioia usando il tuo post. Avevo già provato l'opzione ServerFarm. Devo farlo funzionare solo su SSL, IIS non è legato solo a 80 443. Inoltre, devo far funzionare il sito come descritto nella domanda root / teamcity e non ci sono dettagli sufficienti sul post per farlo funzionare in quel modo. Grazie per il link
Cynicszm,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.