it-swarm-id.com

Bagaimana cara membuat Apache Web Server mendengarkan pada dua port yang berbeda?

Saya ingin Server Web Apache yang telah saya instal di rumah untuk mendengarkan pada port 80 dan port 8080.

Aku sudah menambahkan Listen 8080 ke httpd.conf dan memulai kembali layanan Apache tetapi server sepertinya tidak mendengarkan pada 8080. Menekan http: // localhost: 808 waktu habis dan tidak menampilkan indeks saya. html tapi http: // localhost akan menampilkan index.html saya.

Bagaimana cara membuatnya mendengarkan 80 dan 8080?

45
Owen

Instalasi standar Debian dari Apache akan memiliki fragmen konfigurasi berikut:

 Dengarkan 80 
 
 <IfModule mod_ssl.c> 
 # Host virtual berbasis nama SSL belum didukung, oleh karena itu tidak ada 
 # Pernyataan NameVirtualHost di sini 
 Dengarkan 443 
 </IfModule> 

Ini memberitahu Apache untuk mendengarkan pada port 80 dan mendengarkan port 443 jika mod_ssl dikonfigurasi. Dalam kasus Anda, Anda ingin:

Listen 80
Listen 8080

Anda harus memastikan bahwa Anda menjalankan restart, bukan operasi ulang di Apache untuk itu memperhatikan arahan Dengarkan baru. Yang paling aman untuk dilakukan adalah menghentikan Apache, pastikan itu mati dan mulai lagi.

Jika konfigurasi ini tidak berhasil, periksa file log apakah ada pesan kesalahan. Anda bisa menggunakan "netstat -lep --tcp" untuk melihat apakah ada sesuatu yang mendengarkan pada port 8080. Akhirnya, jika semuanya tidak berfungsi, coba jalankan Apache di bawah strace untuk melihat apakah ia mencoba mengikat ke port itu dan gagal, tetapi tidak mencatat masalah.

64
David Pashley

Jawaban ini bagus, tetapi mereka mengabaikan kemungkinan bahwa Owen telah sudah melakukan ini ("Saya telah menambahkan Listen 8080 ") dapat berarti persis seperti apa suara itu (mis., apa yang disarankan David).

Jika Anda sudah melakukan ini dan masih merasa tidak berfungsi, pastikan bahwa Anda telah mengkonfigurasi arahan Anda dengan benar untuk setiap subdomain yang mungkin Anda miliki, termasuk yang default (jika sudah dikonfigurasi secara manual untuk mendengarkan: 80 tepat setelah namanya).

Anda mungkin memiliki arahan seperti ini:

<VirtualHost *:80>
 ServerName michaelsanford.com
 etc…
</VirtualHost>

Anda perlu mengubahnya ke <VirtualHost *:8080> atau <VirtualHost *:*>.

7
msanford

Langkah 1

#vi httpd.conf
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

httpd (Apache) untuk mendengarkan pada port 80 dan mendengarkan port 443 jika mod_ssl dikonfigurasi.

Listen 80
Listen 8080

Langkah 2

#su - service httpd restart

Langkah 3

$ netstat -lntp

(Tidak semua proses dapat diidentifikasi, info proses yang tidak dimiliki tidak akan ditampilkan, Anda harus menjadi root untuk melihat semuanya.)

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:47027               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:80              0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:8080            0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      -                   
tcp        0      0 ::ffff:127.0.0.1:45100      :::*                        LISTEN      3149/Java           
tcp        0      0 :::111                      :::*                        LISTEN      -                   
tcp        0      0 :::80                       :::*                        LISTEN      -                   
tcp        0      0 :::57173                    :::*                        LISTEN      3149/Java           
tcp        0      0 :::18197                    :::*                        LISTEN      3149/Java           
tcp        0      0 :::22                       :::*                        LISTEN      -                   
tcp        0      0 ::1:631                     :::*                        LISTEN      -                   
tcp        0      0 :::40832                    :::*                        LISTEN      3149/Java           
tcp        0      0 ::ffff:127.0.0.1:6880       :::*                        LISTEN      3149/Java       
5
Rajat

Anda mungkin perlu mengonfigurasi situs port 8080 agar ini berfungsi. Baca dokumentasi untuk Apache Virtual Hosts . Setiap 'situs' dapat diatur untuk menerima koneksi pada port tertentu (dan ip, dll). Apakah Anda memiliki Host virtual di http.conf yang hanya dikonfigurasi untuk port 80?

Anda juga dapat mengonfirmasi bahwa server mendengarkan pada 8080 menggunakan netstat -nlp dan mencari entri di port itu.

0
Dana the Sane

Anda mungkin juga ingin memeriksa untuk melihat apakah Anda telah mengaktifkan SELinux. Konfigurasi SELinux default mungkin tidak memungkinkan Anda untuk menjalankan Apache pada port non-standar. Berikut adalah situs yang menunjukkan kepada Anda jika Anda menjalankan SELinux dan cara menonaktifkannya, jika Anda tidak ingin atau menggunakan fitur-fiturnya. http://www.crypt.gen.nz/selinux/disable_selinux.html

0
Reamer77

Dengan asumsi menjalankan linux netstat -lntp sebagai root seperti yang Anda lihat apakah Apache mendengarkan pada 8080 atau tidak. Ini akan membantu Anda mengidentifikasi jika masalahnya adalah Apache tidak mendengarkan atau jika ada faktor eksternal (mis. Firewall, selinux dll) ke Apache yang membuat waktu koneksi habis.

0
Jason Tan