我在 mydomain.com 有一个新设置的 vps:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal
$
管理员为我安装了 nextcloud。我将我的 nextcloud 客户端指向 work.mydomain.com,效果非常好。我还想设置一个网络服务器www.mydomain.com。目前,当我将网络浏览器指向www.mydomain.com,我收到一个 nextcloud 样式的页面,上面写着“通过不受信任的域访问,请联系您的管理员。”这表明网络服务器正在运行。的确:
$ sudo netstat -tnlp | grep 80
tcp6 0 0 :::80 :::* LISTEN 844835/httpd
$
并且apache2没有安装。如果我安装它,我会得到:
$ service apache2 status
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: failed (Result: exit-code) since Tue 2023-01-31 17:08:54 CET; 1 we>
Docs: https://httpd.apache.org/docs/2.4/
:/$
所以,在我看来,nextcloud 的网络服务器正在处理www.mydomain.com。 nextcloud 的 config.php 中只有 2 个对域的引用:
...
'trusted_domains' =>
array (
0 => 'work.mydomain.com',
),
'datadirectory' => '/var/snap/nextcloud/common/nextcloud/data',
'dbtype' => 'mysql',
'version' => '25.0.2.3',
'overwrite.cli.url' => 'https://work.mydomain.com',
...
所以我不明白如何调用www.mydomain.com正在服务中。我如何将我自己的页面提供给www.mydomain.com?
答案1
您正在尝试运行网络服务器,而 Nextcloud 也在同一台服务器上运行,两者都在端口 80(或用于安全/TLS 连接的 443)。
默认情况下,如果您在浏览器中输入 IP,它会重定向到端口 80(或 443)。在这里,www.mydomain.com
和都work.mydomain.com
重定向到服务器的端口 80(或 443),但只有work
子域被授权访问 Nextcloud。
Apache 无法启动的原因是它默认配置为处理对端口 80 和 443 发出的请求,而这些端口已被 Nextcloud 使用。
您应该使用反向代理配置来为 Nextcloud 和网站提供服务。 Apache 本身可以兼作反向代理和网络服务器。基本上,您将让 Apache 拦截对端口 80 和 443 的请求,并根据 URL 的格式,如果是work.mydomain.com
,则将其重定向到 Nextcloud,如果是www.mydomain.com
,则将其重定向到该网站。
这是使用 VirtualHost 部分完成的。有一个例子这里。