无法让 nextcloud 在端口 82 上侦听
Posted
技术标签:
【中文标题】无法让 nextcloud 在端口 82 上侦听【英文标题】:Cannot get nextcloud listening on port 82 【发布时间】:2020-05-01 23:04:06 【问题描述】:我已经使用 snap 安装了 nextcloud 并将其配置为使用 sudo snap set nextcloud ports.http=82
侦听端口 82,防火墙也在该端口上打开但它没有响应。
正在调查,它似乎正在侦听端口 82,但仅在 ipv6 上(pid 5231):
ubuntuadmin@ubuntu-1804-srv:~$ sudo netstat -tulpn
[sudo] password for ubuntuadmin:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9236 0.0.0.0:* LISTEN 2476/gitaly
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 844/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1275/sshd
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN 2464/grafana-server
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1711/master
tcp 0 0 0.0.0.0:5050 0.0.0.0:* LISTEN 2351/nginx: master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 2351/nginx: master
tcp 0 0 0.0.0.0:8060 0.0.0.0:* LISTEN 2351/nginx: master
tcp 0 0 127.0.0.1:9121 0.0.0.0:* LISTEN 2400/redis_exporter
tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN 2412/prometheus
tcp 0 0 127.0.0.1:9187 0.0.0.0:* LISTEN 2438/postgres_expor
tcp 0 0 127.0.0.1:9093 0.0.0.0:* LISTEN 2420/alertmanager
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 2488/registry
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1512/mysqld
tcp 0 0 127.0.0.1:9100 0.0.0.0:* LISTEN 2419/node_exporter
tcp 0 0 127.0.0.1:9229 0.0.0.0:* LISTEN 2239/gitlab-workhor
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 3156/unicorn master
tcp 0 0 127.0.0.1:9168 0.0.0.0:* LISTEN 2418/puma 4.3.1.git
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2351/nginx: master
tcp 0 0 127.0.0.1:8082 0.0.0.0:* LISTEN 2368/sidekiq 5.2.7
tcp6 0 0 :::22 :::* LISTEN 1275/sshd
tcp6 0 0 :::25 :::* LISTEN 1711/master
tcp6 0 0 :::9094 :::* LISTEN 2420/alertmanager
tcp6 0 0 ::1:9168 :::* LISTEN 2418/puma 4.3.1.git
tcp6 0 0 :::82 :::* LISTEN 5231/httpd
udp 0 0 127.0.0.53:53 0.0.0.0:* 844/systemd-resolve
udp 0 0 0.0.0.0:5353 0.0.0.0:* 4558/mdns-publisher
udp6 0 0 :::9094 :::* 2420/alertmanager
udp6 0 0 :::5353 :::* 4558/mdns-publisher
(nginx 用于 Gitlab)
为什么?
我需要更改或添加什么来告诉他在tcp:
上收听?
问候,
【问题讨论】:
【参考方案1】:从snap source 看来,apache 似乎设置为侦听IPv4-mapped IPv6 套接字:
如果您希望 Apache 使用最少的套接字处理 IPv4 和 IPv6 连接,这需要使用 IPv4 映射的 IPv6 地址,请指定 --enable-v4-mapped 配置选项并使用如下通用 Listen 指令:
听 80
使用 --enable-v4-mapped,Apache 创建的默认配置文件中的 Listen 指令将使用这种形式。 --enable-v4-mapped 是除 FreeBSD、NetBSD 和 OpenBSD 之外的所有平台的默认设置,因此这可能是您的 Apache 的构建方式。
如果您希望 Apache 仅处理 IPv4 连接,无论您的平台和 APR 支持什么,请在所有 Listen 指令上指定 IPv4 地址,如下例所示:
听 0.0.0.0:80 听 192.170.2.1:80
This Github 问题似乎也支持我的理论。
在这个问题得到解决之前,我看到了几个可以解决的选项:
-
使用
socat
设置从ipv4 到ipv6 的转发(参见this SE answer)
使用解决方法provided on github(主要涉及设置 nginx 和反向代理 apache)
调整文件并从源代码重建快照?
【讨论】:
也许这是我的问题的解决方案,但由于我真的不是网络服务器配置方面的专家,所以我真的不知道如何在这种情况下调整它。正如我所说,我已经有一个在 80 端口上运行 Gitlab 的 nginx 服务器。 那么socat
呢?看起来很简单,应该可以完成这项工作。
socat TCP4-LISTEN:82,fork,su=nobody TCP6:[::1]:82
应该可以解决您的问题。只要确保以 root 身份运行它,因为 82 是一个特权端口
事实上,经过 2 周后,我刚刚尝试通过定义的端口 82 访问 nextcloud,它可以正常工作。我什么都没做,nextcloud 总是在 ipv6 上监听,但我认为一个小妖精出现在我的服务器上并解决了问题......抱歉,我真的无法解释发生了什么。以上是关于无法让 nextcloud 在端口 82 上侦听的主要内容,如果未能解决你的问题,请参考以下文章
配置为侦听端口 8080 的 Tomcat 连接器无法启动 - 端口 8080 上没有运行
Prometeus 无法在“0.0.0.0”端口 9094 上启动 TCP 侦听器: