Apa saja cara yang baik untuk melakukan ini? Apakah mungkin dilakukan dengan bersih?
Idealnya saya ingin menggunakan header paket untuk memutuskan server mana yang harus menangani permintaan. Namun, jika ada cara yang lebih mudah / lebih baik, beri tahu saya.
Tidak mungkin kedua server mendengarkan pada port yang sama pada alamat IP yang sama: karena satu soket hanya bisa dibuka oleh satu proses, hanya server pertama yang dikonfigurasi untuk kombinasi IP/port tertentu yang akan berhasil melakukan binding, dan yang kedua akan gagal.
Dengan demikian, Anda akan memerlukan solusi untuk mencapai apa yang Anda inginkan. Yang paling mudah mungkin adalah menjalankan Apache pada kombinasi IP/port utama Anda, dan meminta Apache merutekan permintaan untuk IIS (yang harus dikonfigurasi untuk IP dan/atau port yang berbeda) ke Apache dengan menggunakan mod_rewrite.
Ingatlah bahwa IP dan port alternatif yang dijalankan IIS harus dapat dijangkau oleh klien yang tersambung ke server Anda: jika Anda hanya memiliki satu alamat IP yang tersedia, Anda harus berhati-hati untuk memilih port IIS yang umumnya tidak diblokir oleh firewall (8080 mungkin pilihan yang baik, atau 443, meskipun Anda menjalankan HTTP biasa dan bukan SSL)
P.S. Juga, harap dicatat bahwa Anda perlu memodifikasi konfigurasi default IIS menggunakan httpcfg sebelum mengizinkan server lain untuk berjalan pada port 80 di alamat IP mana pun di server yang sama: lihat jawaban Micky McQuade's untuk prosedur untuk melakukan itu ...
Saya menemukan postingan ini yang menyarankan untuk memiliki dua alamat IP terpisah sehingga keduanya bisa mendengarkan pada port 80.
Ada peringatan bahwa Anda harus membuat perubahan di IIS karena socket pooling. Berikut adalah instruksi berdasarkan tautan di atas:
httpcfg.exe
dari area support tools pada CD Win2003.net stop http /y
httpcfg set iplisten -i 192.168.1.253
httpcfg query iplisten
(IP yang terdaftar adalah satu-satunya alamat IP yang akan didengarkan oleh IIS dan tidak ada yang lain).net start w3svc
Anda perlu menggunakan alamat IP yang berbeda. Server, apakah Apache atau IIS, mengambil lalu lintas berdasarkan IP dan Port, yang mana pun mereka terikat untuk mendengarkan. Setelah mulai mendengarkan, maka server akan menggunakan header, seperti nama server untuk menyaring dan menentukan situs apa yang sedang diakses. Anda tidak dapat melakukannya hanya dengan mengubah nama server dalam permintaan