Apache'yi tek bir IP ile sınırlayın


13

Bir grup IP adresi olan bir sunucum var ve sadece Apache'nin bunlardan birini dinlemesini istiyorum. Yapması zor bir şey gibi gelmiyor ve bir süre önce bir kez yaptım, ama bu sefer biraz sorun yaşıyorum. Öncelikle, şu an buradayım, anlayışım için:

Apache'nin port 80'i dinlediği her yer, sadece doğru IP'de dinliyor.

/etc/apache2$ grep -R ":80" .
./sites-available/default:<VirtualHost 192.168.0.82:80>
./httpd.conf:<VirtualHost 192.168.0.82:80>
./ports.conf:NameVirtualHost 192.168.0.82:80
./sites-enabled/000-default:<VirtualHost 192.168.0.82:80>

0.0.0.0'da dinlemekten söz edilmiyor.

/etc/apache2$ grep -R "0\.0\.0\.0" .

Yine de ... Apache başlamayı reddediyor.

/etc/apache2$ sudo /etc/init.d/apache2 start
 * Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
                                                                         [fail]

Birisi sorarsa, o adrese bağlı değilim:

/etc/apache2$ sudo netstat -nap | grep :80
tcp        0      0 192.168.0.83:80       0.0.0.0:*        LISTEN      2822/node

Adresindeki hata günlüğü /var/log/apache2/error.logşöyle diyor:

[Wed Aug 08 03:30:18 2012] [notice] caught SIGTERM, shutting down

Apache'nin yapılandırmasında bir noktayı kaçırdım mı? Aramamayı hatırlamadığım bir şey var mı? Neden hatırladığım kadar basit değil?


1
Rahatsız olmadım falan değilim, ama bu sorunun en iyi cevabını nasıl seçtiğinizi açıklayabilir misiniz? Seçtiğiniz cevap başka bir dağıtımdan bahsediyordu, cevabım ise Ubuntu ile ilgili. Seçmediğiniz için cevabımı herhangi bir şekilde farklı yapabilir miyim?
pauska

Her iki cevabınız da kritik Listen 192.168.0.82:80çizgiyi içeriyordu . Cjc'nin cevabını seçtim, çünkü bu hattın neden gerekli olduğuna dair biraz daha derinliğe girdi . CentOS ile birlikte gelen Apache versiyonunda kullanılan yorumlardan bahsetmenin güzel bir ek olduğunu düşündüm. Ama herkes cevabın pauska'ya gitmesi gerektiği konusunda genel bir mutabakat içinde göründüğü için, devam ettim ve ona verdim. Sonuçta, pauska'nın yorumunun cjc'nin cevabını şu anki formunda önemli ölçüde etkilediğine dair revizyonlara bakarak fark ettim.
Dan

Yanıtlar:



16

Bak /etc/apache2/ports.confdosyası.

Aşağıdaki gibi bir direktif bulacaksınız:

Listen 80

CentOS kutularındaki yorum şu seçeneği açıklar:

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80

İstediğiniz şey için Listen 80satırı olarak değiştirin Listen 192.168.0.82:80.

Apache'yi şu anda başlatamıyorsunuz çünkü tüm arabirimlerdeki (0.0.0.0 işareti) 80 numaralı bağlantı noktasına bağlanmaya çalışıyor ve node192.168.0.83:80 numaralı telefonu dinliyorsunuz.

Sanal ana bilgisayar bloklarındaki IP, söz konusu sanal ana bilgisayarın söz konusu IP adresine gelen isteklere yanıt vereceği anlamına gelir. Apache'nin gördüğü arayüzlere nasıl bağlanacağını belirtmez.


Httpd.conf, farklı bir yapılandırma dosyası stili (çok sayıda içerir) kullandığından Ubuntu'da boştur. OP'den grep'in gösterdiği gibi, "80 Dinle" de yok.
pauska

1
Ah, doğru. Ubuntu. Güncelleyeceğim. grepVarsayılan olarak bu yine de bayan şeyler gidiyordu böylece 80: o karşıydı yapıyordu Listen 80.
cjc

1
Bu CentOS yorumu gerçekten bana yardımcı olabilirdi. Aptal Ubuntu ...
Dan


0

Apache belgelerine göre aşağıdakileri kullanın :

Dinle 192.168.0.82:80

Bazı durumlarda (hepsi değil), biraz daha ileri gidebilir ve bunu yapabilir:

Some_name_in_my_localhost dinleyin: 80

Bu şekilde, bir Apache sunucu grubunuz olduğunda apache yapılandırmalarınızı taşınabilir hale getirirsiniz. Bunun artıları ve eksileri var (her şeyde olduğu gibi.)

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.