如何使Apache Web Server在两个不同的端口上侦听?

我想在家里安装一个Apache Web服务器来监听80端口和8080端口。

我已经添加了Listen 8080到httpd.conf并重新启动了Apache服务,但服务器似乎没有在8080上进行侦听。在http:// localhost:8080中冲出并且不显示我的index.html,而是http :// localhost将显示我的index.html。

我如何让它听80和8080?

一个标准的Debian安装Apache将有以下的configuration片段:

听80

 <IfModule mod_ssl.c>
     #基于SSL名称的虚拟主机尚不支持,因此没有
     #NameVirtualHost声明在这里
    听443
 </ IfModule>configuration

这告诉apache监听端口80,如果configuration了mod_ssl,则监听端口443。 在你的情况下,你会想要:

 Listen 80 Listen 8080 

您需要确保您运行重新启动,而不是Apache上的重新加载操作,以便注意新的Listen指令。 最安全的做法是停止Apache,确保它已经死了,然后重新启动。

如果此configuration不起作用,请检查日志文件是否有错误消息。 你可以使用“netstat -lep -tcp”来查看端口8080上是否有任何东西在监听。最后,如果一切都不起作用,请尝试在strace下运行apache,看它是否试图绑定到端口并失败,但不logging问题。

这些答案很好,但是他们没有考虑到Owen实际上已经这样做了(“我已经添加了Listen 8080 ”)可能意味着它听起来像是什么(即,David所build议的)。

如果您已经完成了这个工作,但是仍然无法正常工作,请确保您已经正确configuration了您可能拥有的每个子域的指令,包括默认的指令(如果已经手动configuration,以便在名称后紧跟80)。

你可能有这样的指令:

 <VirtualHost *:80> ServerName michaelsanford.com etc… </VirtualHost> 

您需要将其更改为<VirtualHost *:8080><VirtualHost *:*>

步骤1

 #vi httpd.conf Listen 80 <IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 </IfModule> 

httpd(apache)在端口80上侦听,如果configuration了mod_ssl,则侦听端口443。

 Listen 80 Listen 8080 

第2步

 #su - service httpd restart 

第3步

 $ netstat -lntp 

(并不是所有的stream程都可以被识别,非stream量信息不会被显示出来,你必须是root才能看到的。)

 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:47027 0.0.0.0:* LISTEN - tcp 0 0 192.168.1.1:80 0.0.0.0:* LISTEN - tcp 0 0 192.168.1.1:8080 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN - tcp 0 0 ::ffff:127.0.0.1:45100 :::* LISTEN 3149/java tcp 0 0 :::111 :::* LISTEN - tcp 0 0 :::80 :::* LISTEN - tcp 0 0 :::57173 :::* LISTEN 3149/java tcp 0 0 :::18197 :::* LISTEN 3149/java tcp 0 0 :::22 :::* LISTEN - tcp 0 0 ::1:631 :::* LISTEN - tcp 0 0 :::40832 :::* LISTEN 3149/java tcp 0 0 ::ffff:127.0.0.1:6880 :::* LISTEN 3149/java 

您可能还想检查是否启用了SELinux。 默认的SELinuxconfiguration可能不允许您在非标准端口上运行Apache。 这里有一个网站,显示你是否运行SELinux,以及如何禁用它,如果你不想或使用它的function。 http://www.crypt.gen.nz/selinux/disable_selinux.html

您可能需要为站点configuration一个端口8080才能工作。 阅读Apache虚拟主机的文档。 每个“站点”可以设置为接受特定端口(和IP等)上的连接。 你的http.conf中只有一个configuration为80端口的虚拟主机吗?

此外,您可以使用netstat -nlp确认服务器正在侦听8080,并在该端口上查找条目。

假设linux以root身份运行netstat -lntp ,您可以看到apache是​​否正在侦听8080。 这将帮助您确定问题是否是apache不听或者是否有外部因素(例如防火墙,selinux等)到apache使连接超时。