如何让 Apache Web 服务器监听两个不同的端口?

如何让 Apache Web 服务器监听两个不同的端口?

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

我已经添加Listen 8080到 httpd.conf 并重新启动了 Apache 服务,但服务器似乎没有在 8080 上监听。输入http://本地主机:8080超时并且不显示我的 index.html 但是http://本地主机将显示我的index.html。

我怎样才能让它监听 80 和 8080?

答案1

标准的 Debian 安装的 apache 将具有以下配置片段:

听 80

<IfModule mod_ssl.c>
    # 基于 SSL 名称的虚拟主机尚不受支持,因此没有
    此处为 # NameVirtualHost 语句
    收听 443
</IfModule>

这告诉 apache 监听端口 80,如果配置了 mod_ssl,则监听端口 443。对于您的情况,您需要:

Listen 80
Listen 8080

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

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

答案2

这些答案都很棒,但它们忽略了欧文实际上已经完成了这一点(“我已经添加了Listen 8080”)可能意味着听起来就是这样(即 David 所建议的)。

如果您已完成此操作但仍发现它不起作用,请确保您已正确配置了可能拥有的每个子域的指令,包括默认子域(如果已手动配置为在名称后立即监听 :80)。

您可能有这样的指令:

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

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

答案3

步骤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,如果配置了 mod_ssl,则监听端口 443。

Listen 80
Listen 8080

第2步

#su - service httpd restart

步骤3

$ netstat -lntp

(并非所有进程都能被识别,非自有进程的信息将不会显示,您必须以 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       

答案4

您可能需要为站点配置端口 8080 才能使其正常工作。阅读文档Apache 虚拟主机。每个“站点”都可以设置为接受特定端口(和 IP 等)上的连接。您的 http.conf 中是否有仅为端口 80 配置的虚拟主机?

另外,您可以确认服务器正在监听 8080netstat -nlp并寻找该端口上的条目。

相关内容