我正在家里设置一个网络服务器,主要是为了拥有一个 nextcloud 服务器。我已经在 LAMP 堆栈上设置并运行了网站。现在我需要转发我的虚拟主机端口。但是我的 ISP 阻止了端口 80,所以我继续canyouseeme.org
,他们没有阻止端口 90。因此,我在路由器 90、90 中设置了端口转发,包括协议和 IP 地址。进入apache2.conf
添加NameVirtualHost *:90
。然后在我的domain.com.conf
文件中我将 更改为<VirtualHost *:80>
。<VirtualHost *:90>
最后在ports.conf
文件中我添加了行Listening 90
。
但是我仍然无法从外部计算机访问。我是否忽略或错过了什么?
更新 1:
当我运行该命令时,sudo lsof -i tcp:90 | egrep LISTEN
我的输出是:
apache2 739 root 8u IPv6 50229 0t0 TCP *:90 (LISTEN)
apache2 16275 www-data 8u IPv6 50229 0t0 TCP *:90 (LISTEN)
apache2 16276 www-data 8u IPv6 50229 0t0 TCP *:90 (LISTEN)
apache2 16277 www-data 8u IPv6 50229 0t0 TCP *:90 (LISTEN)
apache2 16278 www-data 8u IPv6 50229 0t0 TCP *:90 (LISTEN)
apache2 16279 www-data 8u IPv6 50229 0t0 TCP *:90 (LISTEN)
apache2 16280 www-data 8u IPv6 50229 0t0 TCP *:90 (LISTEN)
更新 2:
当我从外部计算机运行 nmap 时,我进入端口 90 I have Discovered open port 90/tcp on my-public-ip
,90/tcp open dnsix syn-ack ttl 253
在端口 80 上我进入80/tcp filtered http no-response.
但是我可以使用 从外部访问网站内容my.ip.add.res:90
。但是它只发送 html 内容,没有 css。而且我无法通过域名访问它。
答案1
使用 Nginx 可以轻松更改每个 vhost 的端口,但使用 Apache,我的印象是您还需要编辑 ports.conf 文件,例如:
sudo nano /etc/apache2/ports.conf
然后重新启动 Apache。
答案2
在您用于访问服务器的 URL 中包含端口号。例如。http://www.example.com:90因为您的浏览器要寻找的默认端口是 http 的 80 和 https 的 443。