Saya telah berjuang dengan ini selama beberapa waktu dan saya pasti melakukan sesuatu yang salah.
Saya memiliki server apache dan server JBoss di mesin yang sama. Saya ingin mengarahkan lalu lintas untuk mydomain.com ke JBoss localhost: 8080 / contoh. DNS saat ini disiapkan untuk mydomain.com dan akan langsung menuju port 80 ketika dimasukkan ke browser.
Pertanyaan saya adalah bagaimana cara mengalihkan ke port yang berbeda ketika nama domain tertentu datang ke apache (dalam hal ini, "mydomain.com")?
<VirtualHost ip.addr.is.here>
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ProxyPass http://mydomain.com http://localhost:8080/example
ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost>
DIPERBARUI w / Saran - Masih tidak meneruskan ke port 8080
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ServerAlias www.mydomain.com
ProxyPass http://mydomain.com http://localhost:8080/example
ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost>
Jawaban:
Anda harus meninggalkan domain
http://example.com
di ProxyPass dan ProxyPassReverse dan biarkan sebagai/
. Selain itu, Anda harus meninggalkan/
bagian akhir diexample/
tempat pengarahan ulang. Juga, saya punya beberapa masalah denganhttp://example.com
vs.http://www.example.com
- hanya www yang berfungsi sampai saya membuat ServerName www.example.com, dan ServerAlias example.com. Coba ikuti langkah berikut.Setelah Anda melakukan perubahan ini, tambahkan modul yang diperlukan dan mulai ulang apache
sumber
/usr/sbin/setsebool -P httpd_can_network_connect 1
Saya memecahkan masalah ini dengan kode berikut:
Saya juga menggunakan:
sumber
Saya ingin melakukan ini sehingga saya dapat mengakses Jenkins dari domain root.
Saya menemukan saya harus menonaktifkan situs default agar ini berfungsi. Inilah yang saya lakukan.
Dan masukkan ini ke file:
Selanjutnya Anda perlu mengaktifkan / menonaktifkan situs yang sesuai:
Semoga ini bisa membantu seseorang.
sumber
Menemukan ini karena coba-coba. Jika konfigurasi Anda menentukan ServerName, maka arahan VirtualHost Anda perlu melakukan hal yang sama. Dalam contoh berikut, awesome.example.com dan amazing.example.com akan diteruskan ke beberapa layanan lokal yang berjalan pada port 4567.
Saya tahu ini tidak menjawab pertanyaan, tapi saya taruh di sini karena ini adalah hasil pencarian teratas untuk penerusan port Apache. Jadi saya pikir itu akan membantu seseorang suatu hari nanti.
sumber
*:80
bukannyaexample.com:80
berarti bahwa port tidak akan dialihkan.Anda harus memastikan bahwa proxy diaktifkan di server. Anda dapat melakukannya dengan menggunakan perintah berikut:
sumber
Ini mungkin pertanyaan lama, tapi inilah yang saya lakukan:
Dalam file .conf yang dimuat oleh apache:
Penjelasan: Dengarkan semua permintaan ke port mesin lokal 80. Jika saya meminta "
http://something.com/somethingorother
", teruskan permintaan itu ke "http://localhost:8080/somethingorother
". Ini harus berfungsi untuk pengunjung eksternal karena, menurut dokumen, ini memetakan permintaan jarak jauh ke ruang server lokal.Saya menjalankan Apache 2.4.6-2ubuntu2.2, jadi saya tidak yakin bagaimana "-2ubuntu2.2" mempengaruhi penerapan yang lebih luas dari jawaban ini.
Setelah Anda melakukan perubahan ini, tambahkan modul yang diperlukan dan mulai ulang apache
sumber
Jika Anda tidak harus menggunakan proxy ke JBoss dan mydomain.com:8080 dapat "diekspos" ke dunia, maka saya akan melakukan ini.
sumber
Cukup gunakan Reverse Proxy di konfigurasi apache Anda (langsung):
Lihat di sini untuk dokumentasi apache tentang cara menggunakan mod
sumber
Apache saya mendengarkan 2 port yang berbeda,
Saya menggunakan 80 ketika saya ingin URL transparan dan tidak meletakkan port setelah URL berguna untuk layanan google yang tidak akan mengizinkan url lokal?
Tetapi saya menggunakan 8080 untuk pengembangan internal di mana saya menggunakan port sebagai referensi untuk "lingkungan dev"
sumber
Apache mendukung host virtual berbasis nama dan IP. Sepertinya Anda menggunakan keduanya, yang mungkin bukan yang Anda butuhkan.
Saya pikir Anda benar-benar mencoba mengatur hosting virtual berbasis nama , dan untuk itu Anda tidak perlu menentukan alamat IP.
Coba <VirtualHost *: 80> untuk mengikat ke semua alamat IP, kecuali jika Anda benar-benar menginginkan hosting virtual berbasis ip . Ini mungkin terjadi jika server memiliki beberapa alamat IP, dan Anda ingin melayani situs yang berbeda pada alamat yang berbeda. Setup paling umum adalah (saya kira) nama host virtual berbasis.
sumber
Anda membutuhkan 2 hal:
ServerAlias www.mydomain.com
ke konfigurasi AndaProxyPassMatch ^(.*)$ http://localhost:8080/example$1
, agar mod_dir dan trailing slash tidak ikut campur.sumber
Semuanya adalah wawasan yang sangat baik untuk mengakses porta melalui nama domain pada server virtual. Namun, jangan lupa untuk mengaktifkan server virtual; ini dapat dikomentari:
Kami menjalankan WSGI dengan server Apache di domain sxxxx.com dan server golang berjalan pada port 6800. Beberapa firewall sepertinya memblokir nama domain dengan port. Ini solusi kami:
sumber
Ini juga berfungsi di ISPConfig. Dalam daftar situs web masuk ke dalam domain, klik ke tab Opsi, tambahkan baris ini:;
Lalu buka situs web dan wolaa :) Ini juga berfungsi protokol HTTPS.
sumber
Coba yang ini-
sumber