我们有一个LAMP堆栈WordPress服务器,正确地为大多数资产提供服务。 然而,一个插件的CSS文件和几个图像大约20%的时间返回软404。 我无法在访问日志中find对404的任何引用,但是浏览器肯定是从某个地方(WordPress,我会假设)收到一个404响应。
当我使用与网站url不匹配的别名url,但确实parsing为资产path时,资源会在100%的时间内正确加载。 但是,使用网站url只能解决select,有问题的资产20%的时间。
您可以在这里testing其中一个有问题的资产: http : //www.mreco.org/wp-content/uploads/2014/05/zero-cost.jpg
然而,别名链接总是可以正确parsing: http : //mr-eco.wordpress.promocampaigns.com/wp-content/uploads/2014/05/zero-cost.jpg
更奇怪的是,如果我尝试访问服务器上不存在的过时内容,那么在实时URL中,它大约会返回50%的内容。 使用别名链接,它的100%的时间 – 正确的行为。
错误日志和PHP错误日志是干净的。
一个示例访问日志(从grep 'zero-cost.jpg' /var/log/httpd/mr-eco-access_log )从几个刷新的直播链接(我没有看到任何404):
10.166.202.202 - - [28/May/2014:20:27:41 +0000] "GET /wp-content/uploads/2014/05/zero-cost.jpg HTTP/1.1" 304 - 10.166.202.202 - - [28/May/2014:20:27:42 +0000] "GET /wp-content/uploads/2014/05/zero-cost.jpg HTTP/1.1" 304 - 10.166.202.202 - - [28/May/2014:20:27:43 +0000] "GET /wp-content/uploads/2014/05/zero-cost.jpg HTTP/1.1" 304 - 10.166.202.202 - - [28/May/2014:20:27:43 +0000] "GET /wp-content/uploads/2014/05/zero-cost.jpg HTTP/1.1" 304 - 10.176.201.37 - - [28/May/2014:20:27:56 +0000] "GET /wp-content/uploads/2014/05/zero-cost.jpg HTTP/1.1" 200 57027
Chrome的开发工具会在显示404页面内容之前列出以下networking活动:
zero-cost.jpg /wp-content/uploads/2014/05 GET 404 Not Found text/html Other 15.9 KB 73.2 KB 953 ms 947 ms
我的Apacheconfiguration是标准的,我列出了下面的虚拟主机条目和.htaccess文件。 如有必要,我可以提供Apacheconfiguration的其他部分。
虚拟主机:
<VirtualHost *:80> DocumentRoot /var/www/public_html/mr-eco.wordpress.promocampaigns.com ServerName www.mreco.org ServerAlias mreco.org mr-eco.wordpress.promocampaigns.com ErrorLog logs/mr-eco-error_log CustomLog logs/mr-eco-access_log common <Directory /var/www/public_html/mr-eco.wordpress.promocampaigns.com> AllowOverride All SetOutputFilter DEFLATE </Directory> </VirtualHost>
的.htaccess:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
我检查了多个Alogging,并且可以确认有一个指向该域的Alogging:
;; ANSWER SECTION: mreco.org. 60 IN A 50.18.58.174
我对系统pipe理相当陌生,完全可能导致这种情况。 在过去,由于负载平衡器背后的不同步实例,导致了不一致的404资产。 在这种情况下,它是负载平衡器后面的单个实例。
由于不一致,感觉就像是一个caching问题。 我们不使用Apachecaching,据我所知,WordPress不应该caching。
到目前为止我所做的是:
我完全亏损。 谢谢你的协助!
更新
奥卡姆的razor适用。 事实上,负载平衡器下有多个不同步的实例。 我只是最初查看不正确的负载平衡器。 谢谢你的时间。