为什么 Apache 运行在 8080 端口而不是 80 端口?

JJD*_*JJD 7 configuration vhost apache-httpd

我很困惑为什么 Apache 在端口 80 上没有响应......

$ wget http://localhost:80  
--2014-05-06 15:32:44--  http://localhost/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:80... failed: Connection refused.
Run Code Online (Sandbox Code Playgroud)

......而是在 8080 后......

$ wget http://localhost:8080
--2014-05-06 15:32:38--  http://localhost:8080/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 177 [text/html]
Saving to: ‘index.html’

100%[=================================================>] 177 --.-K/s   in 0s

2014-05-06 15:32:38 (16,4 MB/s) - ‘index.html’ saved [177/177]
Run Code Online (Sandbox Code Playgroud)

apache2ctl的输出中看不到太多

$ apache2ctl -t -D DUMP_VHOSTS
VirtualHost configuration:
*:80 is a NameVirtualHost
   default server localhost (/etc/apache2/sites-enabled/000-default.conf:1)
   port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1)
   port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1)
Run Code Online (Sandbox Code Playgroud)

但是,netstat确认端口:

$ sudo netstat -anp | grep :8080
tcp6       0      0 :::8080        :::*       LISTEN      5353/apache2
Run Code Online (Sandbox Code Playgroud)

正如乔尔问,这里是ports.conf

$ sudo cat /etc/apache2/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default

Listen 8080

<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
# NameVirtualHost *:8800
Listen 8800
Run Code Online (Sandbox Code Playgroud)

jll*_*gre 5

为什么 Apache 运行在 8080 端口而不是 80 端口?

通常将 apache 配置为侦听该端口的通常原因是,一个进程需要在 root 帐户下运行或被授予特定权限才能侦听低于1024并且当然包括 port 的TCP端口80

使用更高的非特权端口号允许在没有任何特定配置的常规帐户下运行 apache。

8080是一个容易记住的替代品80

  • @jillagre Apache `httpd` 没有这个限制。它应该总是以 root 身份启动,然后下拉到由 `User` 指令自己指定的帐户。Tomcat 有这个限制(必须作为 root 或非 80 端口运行),因为它是一个应用程序服务器,所以这些不是它的主要关注点。 (2认同)

Bra*_*ley 1

Listen配置文件中指令的值是多少/etc/apache2/ports.conf

你的显示为 8080 和 8800,而不是 80,这就是你得到这些结果的原因。