我的 Apache+Wordpress 机器 (Debian) 出了点问题。默认情况下,它监听端口 80,我已对其进行了更改,现在“监听”端口 9090。
/etc/Apache2/ports.conf
[...]
NameVirtualHost *:9090
Listen 0.0.0.0:9090
[...]
/etc/apache2/sites-available/default
[...]
<VirtualHost *:9090>
[...]
当我尝试通过http://10.250.10.70:9090
y 访问时,不起作用。(Chrome 错误ERR_CONNECTION_REFUSED
:)
如果我尝试在同一台机器上wget http://10.250.10.70:9090/ -O -
获得以下输出:
--2015-05-14 12:31:43-- http://10.250.10.70:9090/
Connecting to 10.250.10.70:9090... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://10.250.10.70/ [following]
--2015-05-14 12:31:43-- http://10.250.10.70/
Connecting to 10.250.10.70:80... failed: Connection refused.
如果我也监听端口 80,但不改变 /etc/apache2/sites-available/default
/etc/Apache2/ports.conf
[...]
NameVirtualHost *:9090
Listen 0.0.0.0:9090
Listen 0.0.0.0:80
[...]
WebSite 可以在端口 80 上运行(我真的不知道为什么,因为 NameVirtualHost 只能在端口 9090 上运行)。此外,如果我通过端口 9090 访问,则可以,但会重定向到端口 80 相同的 URI。如果我再次通过 Web 服务器执行,wget http://10.250.10.70:9090/ -O -
我会得到以下响应:
--2015-05-14 12:38:16-- http://10.250.10.70:9090/
Connecting to 10.250.10.70:9090... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://10.250.10.70/ [following]
--2015-05-14 12:38:16-- http://10.250.10.70/
Connecting to 10.250.10.70:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `STDOUT'
[<=> ] 0 --.-K/s <!DOCTYPE html>
[...]
首先,我不知道为什么 VirtualHost 通过端口 80 工作,其次,为什么这个系统将我监听到的任何流量(在本例中为 9090)重定向到端口 80...
我彻底“迷失”了
谢谢大家
笔记:
root@TWBLOG:~# apache2 -v
Server version: Apache/2.2.22 (Debian)
Server built: Dec 23 2014 22:48:29
答案1
最有可能是防火墙导致了问题。使用以下命令打开端口 9090:
sudo iptables -A INPUT -p tcp --dport 9090 -j ACCEPT
如果你使用 ufw:
sudo ufw allow 9090
如果你想将端口 80 上的所有请求重定向到 9090:
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 9090
答案2
应用程序(WordPress)正在生成重定向 - 您应该检查 WordPress 配置并设置其基本 URI 以反映您正在访问它的新端口。
另请参阅有关更改设置的 WordPress 文档:http://codex.wordpress.org/Changing_The_Site_URL
当 Apache 收到与定义不匹配的请求时,<VirtualHost>
它会使用默认值,即它找到的第一个(或唯一一个)。这应该可以解释为什么到达端口 80 的请求仍然会到达 WordPress 的 VirtualHost。
最后,如果您在从外部机器连接时遇到问题,请检查机器上的防火墙是否允许连接到新的监听端口。