Linux

多個虛擬主機的 Apache2 403 錯誤

  • May 22, 2014

我的 Apache2 安裝有一些問題。

上週由於硬碟故障,我進行了正常備份,將硬碟更換為新硬碟並再次安裝所有 SO (Debian 7 AMD64) 和 Apache2。我已將所有數據從備份恢復到新磁碟。

我再次使用與上次安裝相同的配置配置了虛擬主機,但這次我嘗試訪問除僅託管靜態內容的虛擬主機之外的任何虛擬主機。

Apache 錯誤文件沒有錯誤,在 Apache 啟動期間也沒有錯誤或警告。我還檢查了文件系統的權限和所有者。

這是我的配置文件:

apache2.conf

ServerRoot "/etc/apache2"

LockFile ${APACHE_LOCK_DIR}/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

<IfModule mpm_prefork_module>
   StartServers          5
   MinSpareServers       5
   MaxSpareServers      10
   MaxClients          150
   MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
   StartServers          2
   MinSpareThreads      25
   MaxSpareThreads      75 
   ThreadLimit          64
   ThreadsPerChild      25
   MaxClients          150
   MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_event_module>
   StartServers          2
   MinSpareThreads      25
   MaxSpareThreads      75 
   ThreadLimit          64
   ThreadsPerChild      25
   MaxClients          150
   MaxRequestsPerChild   0
</IfModule>

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

AccessFileName .htaccess

<Files ~ "^\.ht">
   Order allow,deny
   Deny from all
   Satisfy all
</Files>

DefaultType None
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel debug
Include mods-enabled/*.load
Include mods-enabled/*.conf
Include ports.conf
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
Include conf.d/
Include httpd.conf

httpd.conf

<VirtualHost x.x.x.x:80>
       DocumentRoot /home/www/hostname.domain.tld
       ServerName hostname.domain.tld
       ServerAdmin soporte@domain.tld

       <Directory />
               Options FollowSymLinks
               AllowOverride None
       </Directory>

       <Directory /home/www/hostname.domain.tld>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
       </Directory>
</VirtualHost>

<VirtualHost x.x.x.x:80>
       DocumentRoot /home/www/static.domain.tld
       ServerName static.domain.tld
       ServerAdmin soporte@domain.tld

       <Directory /home/www/static.domain.tld>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
       </Directory>
</VirtualHost>

<VirtualHost x.x.x.x:80>
       DocumentRoot /home/www/mail.anijapan.com
       ServerName mail.domain.tld
       ServerAdmin soporte@domain.tld

       <Directory /home/www/mail.domain.tld>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
       </Directory>
</VirtualHost>

<VirtualHost x.x.x.x:80>
       DocumentRoot /home/www/bugs.domain.tld
       ServerName bugs.domain.tld
       ServerAdmin soporte@domain.tld

       <Directory /home/www/bugs.domain.tld>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
       </Directory>
</VirtualHost>

埠.conf

NameVirtualHost x.x.x.x:80
Listen 80

<IfModule mod_ssl.c>
   Listen 443
</IfModule>

<IfModule mod_gnutls.c>
   Listen 443
</IfModule>

我嘗試了不同的東西,在 Google 中查看等,但沒有任何結果。

有人知道我的問題嗎?

謝謝!

我終於可以讓 Apache 正常工作而不會出現 403 錯誤。403錯誤的原因很簡單,它不在伺服器上。

對於域 DNS 管理,我使用 CloudFlare。為了在伺服器 HD 更改時提供服務,我將所有網站移動到具有新 IP 的另一台伺服器。在新 HD 上安裝作業系統後,我將網站從救援伺服器移動到新磁碟,並且我在 CloudFlare 上將 DNS 記錄的 IP 更改為舊的,但 CloudFlare 在這裡失敗,因為它們沒有通過內部錯誤傳播新的 IP 地址。我看到製作跟踪路由(非常愚蠢的解決方案但有效)來查看 A 記錄的真正最終目的地,而不是出現在 CloudFlare 上的最終目的地。

為了讓 CloudFlare 使用正確的 A 記錄,我已將其刪除,保存更改,然後將 A 記錄添加到正確的 IP 地址。一旦我這樣做,一切都開始正常工作。

像這樣啟動apache,前台+調試,如果由於某種原因它無法寫入日誌,那麼它將以這種方式啟動。

. /etc/apache2/envvars
apache2 -e debug -DFOREGROUND

另一個建議是查看 /var/log/messages 和 /var/log/syslog,但您可能已經完成了此頁面zroger.com中的更多資訊

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