Konfigurasikan IIS 7 Reverse Proxy untuk terhubung ke TeamCity Tomcat

12

Kami memiliki server web IIS 7 yang dikonfigurasi dan ingin membuat proxy terbalik untuk instalasi TeamCity menggunakan Tomcat pada mesin yang sama.

Situs server IIS adalah https://somesitedan saya ingin TeamCity muncul sebagai https://somesite/teamcitypengalihan http://localhost:portnumber.

Saya telah menginstal ekstensi penulisan ulang URL IIS dan Routing Permintaan Aplikasi untuk mencoba dan mengatur proxy terbalik tetapi tidak dapat membuatnya berfungsi.

Jawaban terdekat yang saya temukan adalah pertanyaan StackOverflow lama: /programming/331755/how-do-i-setup-teamcity-for-public-access-over-https
yang sayangnya tidak memiliki pekerjaan contoh.

Saya telah mencari sedikit tetapi sepertinya tidak dapat menemukan contoh yang relevan.

Bantuan apa pun dihargai!

Siniszm
sumber
Saya juga memperhatikan bahwa menggunakan metode ini beberapa tombol di TeamCity mengarah ke 'http' dan bukannya 'https' ... mungkin tidak ada cara yang baik untuk melakukan ini. Meskipun dapat ditulis ulang, apakah itu berarti panggilan pertama dengan semua data dikirim dalam teks biasa? hmmm
tofutim

Jawaban:

12

Setelah menghabiskan sekitar 4 jam mencoba mengkonfigurasi SSL untuk TeamCity (dan menggunakan jawaban di utas ini), saya berhasil membuatnya berfungsi menggunakan opsi server farm.

  • Saya mengonfigurasi server server TeamCity yang menyertakan server TeamCity saya di 127.0.0.1 menggunakan port 8080, dan mengizinkan Aturan Perutean Aplikasi untuk membuat aturan perutean server farm terkait.

  • Saya kemudian membuat situs web bernama TeamCitySecureProxy yang saya konfigurasikan dengan sertifikat yang ditandatangani sendiri. Di binding saya hanya mengkonfigurasi https / 443 (tidak ada http / 80).

  • Bagian yang saya lewatkan: - Saya kemudian mengklik simpul 'TeamCity' di bawah 'Server Farms' di IIS, pilih 'Proxy' dari panel 'Server Farm', dan centang 'Reverse host penulisan ulang di header respons'.

Saya sekarang memiliki titik akhir yang aman untuk mengakses instalasi http TeamCity polos saya.

Warren Edwards
sumber
1
Saya mendapatkan "502 - Server web menerima respons yang tidak valid saat bertindak sebagai gateway atau server proxy." - Apakah Anda menemukan ini dalam perjalanan Anda, dan jika demikian, bagaimana Anda memperbaikinya?
mcintyre321
Solusi ini berhasil untuk saya. Diperlukan pembalikan penulisan ulang host jika tidak beberapa tombol mengarah ke http alih-alih https. Terima kasih Warren
tofutim
Ada beberapa masalah dengan server nuget dalam skenario ini. :(
tofutim
1

Anda juga dapat menggunakan konektor untuk melakukannya.

Ada konektor lama ISAPI (redirector) yang tersedia dari Apache secara langsung atau ada juga yang baru dari RiaForge (yang ini sepertinya lebih mudah untuk dijalankan).

http://tomcatiis.riaforge.org/

Henry Fastow
sumber
1
bagaimana dengan *.jarfile? Saya menginstal ini pada IIS 7.5 saya, tetapi hanya melayani *.jspkonten ... :( Saya memiliki vaadin-6.6.2.jarfile di root webapp saya. Saya pikir BonCode AJP Connector hanya menangani JSP, saya dapat melihat Boncode-Tomcat-JSP-Handleropsi "Handler Mappings" dari IIS, tetapi itu tidak mengatur apa yang harus dilakukan dengan *.jarfile
Sk8erPeter
1

Pastikan proksi ARR diaktifkan di IIS GUI. Anda mungkin ingin mempertahankan header host (mungkin perlu mengedit applicationHost.config dengan tangan, atau menggunakan appcmd untuk mengatur yang ini) dan membalikkan penulisan ulang host dalam opsi header respons yang diaktifkan juga, sehingga browser membuat permintaan, dan melihat respons, yang cocok dengan Host sertifikat SSL.

  1. Situs IIS pada 443 (dan 80 mungkin?) - mendengarkan semua permintaan (jangan tentukan nama host)
  2. lihat semua jalur masuk: URL kecocokan (.*)
  3. cari jalur TeamCity, pertahankan sisa jalur: kondisi {URL} cocok^teamcity(/.*)?
  4. menulis ulang dengan jalur yang terpelihara: action rewrite, http://localhost:port/{C:1}
  5. tambahkan querystring diperiksa
  6. dan berhenti memproses aturan lebih lanjut mungkin diperiksa

Saya pikir itu harus dilakukan.

<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>
andrewbadera
sumber
0

Saya baru saja melakukan ini sendiri dan baru saja memposting blog tentang hal itu.

Anda tampaknya telah menginstal semua persyaratan, sekarang Anda hanya perlu mengatur server:

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

Bronumski
sumber
Tidak senang menggunakan pos Anda. Saya sudah mencoba opsi ServerFarm. Saya perlu membuatnya bekerja hanya pada SSL, IIS tidak terikat pada hanya 80 443. Juga perlu membuat situs berfungsi seperti yang dijelaskan dalam root pertanyaan / teamcity dan ada detail yang tidak cukup pada posting untuk membuatnya bekerja seperti itu. Terima kasih atas tautannya
Cynicszm