![安装 varnish 后,我在使用 apache 时遇到了困难](https://linux22.com/image/618147/%E5%AE%89%E8%A3%85%20varnish%20%E5%90%8E%EF%BC%8C%E6%88%91%E5%9C%A8%E4%BD%BF%E7%94%A8%20apache%20%E6%97%B6%E9%81%87%E5%88%B0%E4%BA%86%E5%9B%B0%E9%9A%BE.png)
我已经在 centos 上运行 directadmin 好几年了,现在我需要为我们的网站提供一个更好的服务器环境。我在 rackspace 实例上安装了最新的 centos 版本,directamin 和所有必要的服务的安装都很顺利。由于我经营一家基于 magento 的商店,所以我想测试一下 varnish,找到了我需要的一切,并成功安装了 varnish。当我将 varnish 切换到端口 80 并将 apache 切换到 8080 时,问题就出现了,apache 错误日志报告:
[Wed Sep 18 06:50:25 2013] [error] [client 127.0.0.1] File does not exist: /var/www/htdocs/404.shtml
[Wed Sep 18 08:56:58 2013] [error] [client 127.0.0.1] File does not exist: /var/www/htdocs/favicon.ico
[Wed Sep 18 08:56:58 2013] [error] [client 127.0.0.1] File does not exist: /var/www/htdocs/404.shtml
[Wed Sep 18 08:56:58 2013] [error] [client 127.0.0.1] File does not exist: /var/www/htdocs/404.shtml
[Wed Sep 18 09:09:58 2013] [error] [client 127.0.0.1] File does not exist: /var/www/htdocs/www.google.com
[Wed Sep 18 09:09:58 2013] [error] [client 127.0.0.1] File does not exist: /var/www/htdocs/404.shtml
[Wed Sep 18 09:09:58 2013] [error] [client 127.0.0.1] File does not exist: /var/www/htdocs/405.shtml
[Wed Sep 18 10:18:30 2013] [error] [client 127.0.0.1] File does not exist: /var/www/htdocs/robots.txt
[Wed Sep 18 10:18:30 2013] [error] [client 127.0.0.1] File does not exist: /var/www/htdocs/404.shtml
[Wed Sep 18 10:18:30 2013] [error] [client 127.0.0.1] File does not exist: /var/www/htdocs/skin
[Wed Sep 18 10:18:30 2013] [error] [client 127.0.0.1] File does not exist: /var/www/htdocs/404.shtml
服务器根本不使用 /var/www/htdocs,但是我的 httpd.conf 中有一条记录:
DocumentRoot "DocumentRoot "/var/www/htdocs""
但是我的旧服务器上也有相同的配置,我从未发现任何错误。当我切换回 apache 时,一切都在 apache 配置中使用相同的指令正常工作。新服务器只有一个 IP 地址,我运行的虚拟主机(在 directadmin 中配置)与旧服务器相同。我想知道这里出了什么问题,当我查看 Varnish 日志时,静态内容的 URL 没问题,但需要动态内容时,apache 试图查看 /var/www/htdocs,但没有任何用处(空目录),我的文件在 /home/user/public_html 中。我搞不懂 :(
答案1
有两个地方需要更改端口。在 ports.conf 中,您需要:
NameVirtualHost *:8080
Listen 8080
并在 sites-enabled 中的虚拟主机文件中,以便它们启动:
<VirtualHost *:8080>
我怀疑您忘记更改其中一个。
答案2
不要更改 apache 端口,将 varnish 保留在端口 8080 上,并将请求重定向到防火墙上的端口 8080。