Apache Web Sunucusunu iki farklı portta nasıl dinletirim?


45

Evde kurduğum bir Apache Web Sunucusunu, 80 numaralı ve 8080 numaralı bağlantı noktalarında dinlemek istiyorum.

Ben ekledik Listen 8080httpd.conf ve Apache hizmetlerini yeniden ancak sunucu içinde 8080 Kesimi dinlemeyi olması görünmüyor http: // localhost: 8080 aşımına uğrar ve benim index.html ancak göstermez http: / / localhost index.html dosyamı görüntüler.

80 ve 8080'i nasıl dinletirim?


Sence 8080 numaralı bağlantı noktasını dinlemiyor mu? Yapılandırmanızın snippet'lerini göndermek de yararlı olabilir.
David Z

1
Http.conf dosyasını düzenledikten sonra Apache'yi yeniden başlattınız mı?
Sane Dana,

@David Neden 8080’de dinlemediğini düşündüğümü göstermek için sorumu güncelledim. Şu anda httpd.conf’a erişimim yok. @Dana - evet.
Owen,

Yanıtlar:


63

Standart bir Debian apache kurulumunda aşağıdaki konfigürasyon parçası bulunacaktır:

80 dinle

<IfModule mod_ssl.c>
    # SSL adı tabanlı sanal ana bilgisayarlar henüz desteklenmiyor, bu nedenle hayır
    # NameVirtualHost deyimi burada
    443'ü dinle
</ IfModule>

Bu apache'ye 80 numaralı bağlantı noktasını ve mod_ssl yapılandırılmışsa 443 numaralı bağlantı noktasını dinlemesini söyler. Senin durumunda ne istersin:

Listen 80
Listen 8080

Yeni Dinleme direktiflerine dikkat etmek için apache'de yeniden yükleme işlemi değil yeniden başlatma işlemi yaptığınızdan emin olmanız gerekir. Yapılacak en güvenli şey, apache'yi durdurmak, öldüğünden emin olmak ve tekrar başlatmak.

Bu yapılandırma çalışmazsa, günlük dosyalarında herhangi bir hata mesajı olup olmadığını kontrol edin. 8080 numaralı bağlantı noktasını dinleyen herhangi bir şey olup olmadığını görmek için "netstat -lep --tcp" komutunu kullanabilirsiniz. Son olarak, eğer her şey işe yaramazsa, o bağlantı noktasına bağlanmaya çalışıp başarısız olmayacağını görmek için strace altında apache çalıştırmayı deneyin. ancak sorunu günlüğe kaydetme.


1
Apache 2.4'te bu yapılandırma parçası nerede bulunabilir? Teşekkürler.
Luís de Sousa

2
Kendi sorumu cevaplama: /etc/apache2/ports.conf.
Luís de Sousa

7

Bu cevaplar büyük, ama onlar Owen ihtimalini dışarıda bırakın gelmiştir aslında ( "Ben ekledim zaten yapmış Listen 8080o (yani David önerdi ne) gibi sesler tam olarak ne anlamına gelebilir").

Bunu zaten yaptıysanız ve hala çalışmıyorsa, varsayılanları da içeren (varsa dinlemek için manuel olarak yapılandırılmışsa: 80), direktiflerinizi her alt alan adı için doğru şekilde yapılandırdığınızdan emin olun.

Muhtemelen böyle bir direktifin var:

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

Bunu <VirtualHost *:8080>veya olarak değiştirmeniz gerekir <VirtualHost *:*>.


Bunun benim sorunum olduğundan şüpheleniyorum. Sanırım bir <VirtualHost *: 80> yönergesi var. Bunu kontrol edeceğim.
Owen,

1
Sanal bir ana makineniz yoksa, size standart bir index.html, bir dizin dizin sayfası, bir 404 veya 403 hatası verecek olan genel DocumentRoot'tan içerik sunulur. Zaman aşımı olmazdı.
David Pashley

2
Sessizce paketleri düşüren bir güvenlik duvarınız var gibi.
msanford

Görünüşe göre, bir güvenlik duvarı sorunuydu.
Owen,

5

Aşama 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) 80 numaralı bağlantı noktasını dinlemek ve mod_ssl yapılandırılmışsa bağlantı noktası 443'ü dinlemek için.

Listen 80
Listen 8080

Adım 2

#su - service httpd restart

Aşama 3

$ netstat -lntp

(İşlemlerin tümü tanımlanamadı, ait olmayan işlem bilgileri gösterilmez, hepsini görmek için kök olmanız gerekir.)

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       

0

SELinux’un etkin olup olmadığını kontrol etmek de isteyebilirsiniz. Varsayılan SELinux yapılandırması, Apache'yi standart olmayan bağlantı noktalarında çalıştırmanıza izin vermeyebilir. İşte SELinux kullanıp kullanmadığınızı ve özelliklerini kullanmak istemiyorsanız kullanmıyorsanız nasıl devre dışı bırakacağınızı gösteren bir site. http://www.crypt.gen.nz/selinux/disable_selinux.html


Veya SELinux'u açık bırakabilirsiniz, eğer modern bir SELinux sistemindeyseniz, portların nasıl semanage portu ile etiketlendiğini görün. bkz. danwalsh.livejournal.com/9275.html "Apache daemon'umun farklı bir portta dinlemesini istiyorum ama SELinux bunu önlüyor, ne yapmalıyım?"
rev

0

Bunun çalışması için bir siteyi bir 8080 portu yapılandırmanız gerekebilir. Apache Sanal Konaklarının belgelerini okuyun . Her bir 'site', belirli bağlantı noktalarındaki (ve ip'ler, vb.) Bağlantıları kabul edecek şekilde ayarlanabilir. Http.conf dosyanızda yalnızca 80 numaralı bağlantı noktası için yapılandırılmış sanal bir ana makineniz var mı?

Ayrıca, sunucunun 8080'i dinleyip dinlemediğini netstat -nlpve bu bağlantı noktasında bir giriş aradığını onaylayabilirsiniz .


1
Hayır, bu doğru değil. Apache'nin bir bağlantı noktasını dinlemesini istiyorsanız, Listen yönergesini kullanmanız gerekir.
David Pashley


1
Pekala, bir şekilde doğru olabilir - birçok insan <VirtualHost *: 80> gibi vhost'ler yaratır ve bu durumda onu <VirtualHost *: *> olarak değiştirmeniz veya 8080 portu için başka bir vhost yaratmanız gerekir. (Tabii ki, Ayrıca, dinleme yönergesi de gereklidir)
David Z

@David Pashley, Yazar Listen yönergesinin zaten eklendiğini belirtti.
Sane Dana,

0

Linux'un netstat -lntpapache'nin 8080'de dinleyip dinlemediğini görebildiğiniz kadar kök çalıştırdığını varsayalım. Bu, sorunun apache'nin dinlenip dinlenmediğini veya bağlantı zaman aşımına uğrayan apache'de dış etkenlerin (ör. Firewall, selinux vb.) Olup olmadığını belirlemenize yardımcı olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.