在 debian 上,lighttpd apache2 使用 80 端口,lighttpd 抛出:地址已经使用错误

在 debian 上,lighttpd apache2 使用 80 端口,lighttpd 抛出:地址已经使用错误

前几天我买了 linode(linode.com) 服务器。我一直试图在同一个端口上运行 lighttpd 和 apache2,使用 lighttpd 处理静态文件。由于 linode 只提供一个 ipv4 地址,我尝试将 lighttpd 绑定到 ipv6 地址。每次我都遇到同样的错误:无法绑定到端口 [ipv6] 80 地址已在使用中。我尝试绑定 ipv4 地址。一切正常。请帮帮我,这两天让我抓狂不已。

我的 lighttpd.conf 文件:(ipv6 地址不正确)

server.modules = (
    "mod_access",
    "mod_alias",
    "mod_compress",
    "mod_redirect",
#       "mod_rewrite",
)

server.document-root        = "/var/www"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80
server.bind         = "2600:3c02::0000"
server.use-ipv6         = "enable"
#server.pid-file            = "/var/run/lighttpd.pid"


index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny             = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

# default listening port for IPv6 falls back to the IPv4 port
#include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"


### ipv6 ###
$SERVER["socket"] == "[2600:3c02::0000]:80" {
#   accesslog.filename  = "var/log/lighttpd/ipv6/access.log"    
#   server.document-root = "/var/www/"
#   server.error-handler-404 = "/index.php?error=404"
}

和错误消息:无法绑定到端口,2600:3c02::0000 地址已在使用中。

答案1

您绑定[2600:3c02::0000]:80

server.port                 = 80
server.bind         = "2600:3c02::0000"

$SERVER["socket"] == "[2600:3c02::0000]:80" {
...
}

这意味着您将两次绑定到同一个地址。移除$SERVER["socket"]阻止后您就没问题了。

编辑:这样你就得到了你想要的东西;但我怀疑你的“设置”总体上是不是一个好主意;正如 Halfgaar 指出的那样,一个网络服务器必须代理到另一个网络服务器;通常,提供静态文件的服务器应该是公开可见的,代理到另一个隐藏的服务器)

答案2

如果您希望通过 lightttpd/nginx 提供静态文件,并通过 apache 提供动态文件,则必须在端口 80(如果是 SSL,则为 443)上运行 lightttpd/nginx,并在其他端口上运行 apache。然后,您将 lightttpd/nginx 配置为代理,以将所有非静态内容转发到备用端口上的 apache。有很多示例可供查找。

相关内容