Apache, belirli bir site için ServerName yönergesine saygı duymuyor


9

Bir süredir iyi çalışan Apache kullanarak VirtualHosts olarak yapılandırılmış birkaç sitem var. Kısa bir süre önce sunucunun ana bilgisayar adını, sunulan etki alanı adlarından birine değiştirdim ve sunucunun harici IP adresini gösteren / etc / ana bilgisayarlarına da ekledim.

Bunu yaptığımdan beri, etki alanına dizüstü bilgisayarımdan erişmek beni Apache'nin varsayılan "Çalışıyor!" sayfa. / Etc / apache2 / sites-etkin / öğesinden 000-default'u kaldırırsam, doğru siteyi görüntüler. Siteye 'www.' İle erişmeye çalışıyorum prefix, 000-default'un sitelerde etkin olup olmadığını doğru siteye götürür.

Tüm bunlara dayanarak, ana makine adını veya / etc / hosts (veya her ikisini) nasıl yapılandırdığımdan dolayı varsayılan yapılandırma varsayılan sayfayı sunmakta olduğunu tahmin ediyorum, ancak bunu nasıl devre dışı bırakacağımı anlayamıyorum bu ayarları olduğu gibi bırakır. Herhangi bir öneri hoş geldiniz!

Düzenle - Geçerli VirtualHost yapılandırmam şöyle görünüyor:

<VirtualHost *:80>
    ServerName domain.com
    ServerAlias www.domain.com
    ServerAdmin me@domain.com

    DocumentRoot /srv/www/domain

    ErrorLog /srv/www/domain/logs/error.log
    CustomLog /srv/www/domain/logs/access.log combined
</VirtualHost>

Özetlemek gerekirse: Birden fazla VirtualHost ayarladım ve bu düzgün çalışmıyor. Ben erişebilir http://www.domain.com gayet ama http://domain.com Apache varsayılan beni alır "Çalışıyor!" sayfa. 000 varsayılan yapılandırmayı devre dışı bırakırsam uygun sayfayı gösterir. Bu ancak sunucunun ana bilgisayar adını domain.com olarak ayarladıktan ve /.com / hosts'e domain.com'u işaret ederek sunucunun harici IP adresine bir satır ekledikten sonra gerçekleşmeye başladı. Mümkünse bunları bu şekilde bırakmak istiyorum.

Düzenleme: Ben koştu apache2ctl -Sberi /usr/sbin/apache2 -Sbana "apache2: kötü kullanıcı adı $ {APACHE_RUN_USER}" verdi. İşte çıktı:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server domain.com (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost domain.com (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost other.com (/etc/apache2/sites-enabled/other:1)
         port 80 namevhost another.com (/etc/apache2/sites-enabled/another:1)
         port 80 namevhost domain.com (/etc/apache2/sites-enabled/domain:1)
Syntax OK

.com.com ana httpd.conf dosyasında SunucuAdı olarak mı kullanılıyor? veya apache2ctl.conf, ubuntu kullanıyor gibi göründüğünden adı değiştirebilir.
Prix

Yanıtlar:


12

Geçen gün bu soruyu kaybettim.

ServerName bileşeni olmayan bir <VirtualHost> kabınız varsa, varsayılan ana bilgisayar adını kullanır. 000-default muhtemelen bir ServerName bileşenine sahip olmadığından ve içerilecek ilk alfabetik olduğundan, hostname.com için yanıt verir ve açıkça bildirilen ana makine adınızın çalışmasına izin vermez.


Bunu düzeltmenin bir yolu var mı? Varsayılan yapılandırmanın işlenmemiş etki alanlarını işlemesini istiyorum, ancak belirli bir etki alanını işlemesini istemiyorum.
John Debs

bir yapılandırmada kullanılandan farklı bir alan adı verin veya zzz-default olarak yeniden adlandırın, böylece son olarak adlandırılır.
karmawhore

Tamam, sanırım şimdi hepsini anlıyorum. Zzz-default'u denedim ama istediğim kesin davranış değil. Ayar ServerName example.comvarsayılan yapılandırmasında olsa harika çalışıyor. Teşekkürler!
John Debs

4

Bir yerde bir NameVirtualHost *: 80 yönergesi var mı?

Deneyin:

/usr/sbin/apache2 -S

Bu size apache'nin yapılandırma dosyasını nasıl ayrıştırdığını söyleyecektir. Gerçek IP'leri olan veya tümü * olan yapılandırmalarınız var mı? 80 eksik olan var mı? Apache bunları karıştırmayı sevmez.

Varsayılan olarak bir ServerName domain.com veya ServerAlias ​​domain.com var mı?


Evet, /etc/apache2/posts.conf dosyamda var. Soruya umarım daha açık hale getirecek bir özet ekleyeceğim.
John Debs

000 varsayılan yapılandırmam dokunulmamış, hiçbir ServerName veya ServerAlias ​​yönergesi yok.
John Debs

NameVirtualHost kullanımdan kaldırıldı.
Sam


0

Bu işe yaradı:

<VirtualHost *:80>
    DocumentRoot /var/www/www.mydomain.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
</VirtualHost>

bir yazım hatası vardı, işe yaramadı (ServerName yönergesi iki kez):

<VirtualHost *:80>
    DocumentRoot /var/www/www.mydomain.com
    ServerName mydomain.com
    ServerName www.mydomain.com
</VirtualHost>

ServerName yönergesi iki kez vardı, listelenen ilk siteye (burada gösterilmemiştir) çözümlemeye devam etti.

umarım bu birine yardım eder ...


0

Benzer bir sorun vardı ve apache otomatik olarak anlamaya izin vermek yerine, ana httpd.conf dosyasında açıkça bir ServerName ayarlayarak düzeltti. Ne apache karar verdi benim hayalet (daha sonra tanımlanacaktır) aynı olduğunu varsayıyorum, böylece varsayılan bir "kazandı", vhost ayarını geçersiz kılma.

Ben sadece httpd.conf SunucuAdı makinenin sahip olduğu bir ana bilgisayar adına ayarladım, asla web sayfalarını sunmayacağım.

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.