Linux

添加新虛擬主機後伺服器文件根更改

  • November 13, 2019

Ubuntu 18.04.3、Virtualmin 6.08、Webmin 1.932

奇怪的事情正在發生。

如果我在 /etc/apache2/sites-enabled 中什麼都沒有

然後我可以訪問伺服器的首頁:ns.server.com (/var/www/html)

和 ns.server.com/phpmyadmin 工作正常

如果我添加一個虛擬主機,或者啟用一個站點

a2ensite domain.com (+ 重新載入 apache)

然後當我嘗試訪問 ns.server.com 時出現 403 Forbidden

和 ns.server.com/phpmyadmin 下載 php 文件而不是執行它。

如果我 a2dissite domain.com (+ reload apache)

一切都再次正常工作。

/etc/apache2/apache2.conf:

DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
   Options FollowSymLinks
   AllowOverride None
   Require all denied
</Directory>
<Directory /usr/share>
   AllowOverride None
   Require all granted
</Directory>
<Directory /var/www/>
   Options Indexes FollowSymLinks
   AllowOverride None
   Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
   Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
SSLProtocol ALL -SSLv2 -SSLv3
SSLCipherSuite HIGH:!SSLv2:!ADH:!aNULL:!eNULL:!NULL
<IfModule php7_module>
   AddType application/x-httpd-php .php
   AddType application/x-httpd-php-source .phps
   <IfModule dir_module>
       DirectoryIndex index.html index.php
   </IfModule>
</IfModule>

有人可以幫忙弄清楚發生了什麼嗎?謝謝,

更新

因此,ns.server.com 似乎總是指向 /etc/apache2/sites-enabled 中按字母順序排列的第一個站點的 public_html。如果我把 index.html 放在那裡,我可以訪問 ns.server.com。

此外,如果我在第一個虛擬主機中以 Apache 使用者身份執行 php,那麼 ns.server.com/phpmyadmin 也可以正常工作。

所以有一個解決方法,但這太奇怪了:-o

有任何想法嗎?

簡而言之,作為最佳實踐,定義一個_default_虛擬主機。

IE

<VirtualHost _default_:*>
   DocumentRoot "/www/default"
</VirtualHost>

您還可以將其添加到現有的虛擬主機指令中……如果需要:

<VirtualHost _default_:* 1.2.3.4:80>
   DocumentRoot "/www/some_website"
</VirtualHost>

引用自:https://serverfault.com/questions/991719