这里有点麻烦。我正尝试将网站 (www.monkhouselaw.com) 从一家托管公司移至我的 Digital Ocean VPS。我已将 DNS 设置更改为:
* -> 107.170.29.18
www -> 107.170.29.18
monkhouselaw -> 107.170.29.18
然后它将指向我的 VPS 上的 Apache 虚拟主机。
目前我只是尝试在服务器上加载单个 PHP 索引页。一旦它正常工作,我就会安装 WordPress。遗憾的是,它不起作用。
目前访问 www.monkhouselaw.com 会返回 503 错误。我就是不知道为什么。检查 Apache 错误日志显示:
(111)Connection refused: AH00957: HTTP: attempt to connect to 127.0.0.1:3000 (localhost) failed
[Sun Jun 05 16:44:46.900331 2016] [proxy:error] [pid 2207] AH00959: ap_proxy_connect_backend disabling worker for (localhost) for 60s
[Sun Jun 05 16:44:46.900339 2016] [proxy_http:error] [pid 2207] [client 108.63.121.42:51559] AH01114: HTTP: failed to make connection to backend: localhost, referer: (long url)
后来是这样的:
[Sun Jun 05 16:45:21.841236 2016] [proxy:error] [pid 2198] AH00940: HTTP: disabled connection for (localhost)
我尝试检查本地主机上的 3000 端口是否正在监听,结果不是。但是,据我所知,有一个预先存在的虚拟主机应该将对 3000 端口的请求重定向到 80 端口。该文件是 000-default.conf。该文件的内容远不止以下内容,但以下是相关部分:
<VirtualHost *:80>
...
LoadModule proxy_module {path-to-modules}/mod_proxy.so
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
...
</VirtualHost>
但老实说,我不确定它为什么试图访问端口 3000,因为 Monkhouselaw 的虚拟主机文件被定向到 80 端口:
<VirtualHost *:80>
DocumentRoot /var/www/monkhouse
ServerName monkhouselaw.com
<Directory "/var/www/monkhouse">
allow from all
Options None
Require all granted
</Directory>
</VirtualHost>
这时我不知所措。谷歌搜索显示大量有关 SELinux 的结果,但 SELinux 似乎未安装。例如,我看到建议输入以下内容:
togglesebool httpd_can_network_connect
它只是向我返回程序“togglesebool”不存在的消息。
本质上,这是一个我需要解决的严重问题,我已经浏览了两位数的 Google 结果页面试图寻找解决方案,但没有成功。
有人能够提供帮助吗?
答案1
您对 Apache 配置的理解有点落后和颠倒。我建议您阅读有关您尝试配置的任何新软件的文档。:)
简而言之,虚拟主机配置的这一部分:
<VirtualHost *:80>
...与 apache 如何处理与虚拟主机的连接无关。相反,它配置听众接收您的请求。在本例中,它监听所有 IP 地址 ( *
) 和端口 80 ( 80
)。
vhost 声明中的内容向 apache 描述了它应该如何处理与该虚拟主机的连接。就您提供的片段而言,它正在监听端口 80,并将请求定向到端口 3000,就像它配置的那样。您没有包含整个配置块,因此不清楚这是否是基于名称的虚拟主机。
接下来,您的第二个代码片段仅包含monkhouselaw.com作为ServerName
。这是您在此网站上可以使用的唯一名称,并且希望一切正常。由于您目前已配置好一切,因此www.monkhouselaw.com将不是工作。您需要将其添加为ServerAlias
。