![使用 OpenLiteSpeed 的 Web 浏览器中,Curl 可以运行,但页面不行](https://linux22.com/image/1177211/%E4%BD%BF%E7%94%A8%20OpenLiteSpeed%20%E7%9A%84%20Web%20%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%EF%BC%8CCurl%20%E5%8F%AF%E4%BB%A5%E8%BF%90%E8%A1%8C%EF%BC%8C%E4%BD%86%E9%A1%B5%E9%9D%A2%E4%B8%8D%E8%A1%8C.png)
我在 Linode 服务器和 OpenLiteSpeed 上运行 Ubuntu 20.04.1 LTS openlitespeed.org
。
我在浏览器中遇到了example.com:8088
和example.com:7080
两个 OpenLiteSpeed 管理和配置页面的超时。
但是通过 SSH 登录时,运行
curl 127.0.0.1
会给我根目录下的 index.html 文件的文本,并
curl http://localhost:8088
给我 OpenLiteSpeed 管理页面的 html 转储。
从另一台主机运行curl 123.45.67.123
即可。
直接访问站点/服务器 IP123.45.67.123
即可。
从另一台主机运行curl example
没有返回任何内容。
在浏览器中运行example.com
并显示 index.html 页面。
pingexample.com
操作有效。
但我无法连接到example.com:8088
浏览example.com:7080
器。
Apache 正在运行,但是 OpenLiteSpeed 尚未配置为使用端口 80,因为我无法进入管理页面。
ufw 状态显示:
65500 ALLOW Anywhere
443 ALLOW Anywhere
443/tcp ALLOW Anywhere
7080/tcp ALLOW Anywhere
8088/tcp ALLOW Anywhere
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
65500 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
7080/tcp (v6) ALLOW Anywhere (v6)
8088/tcp (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
完全禁用 ufw 对该问题没有影响。
有任何想法吗?
编辑于 2020/10/25:
编辑 10/26/2020
ufw
这在我的本地 Mac 上运行,服务器上的端口 7080 被拒绝,并调出 OLS 管理页面:
ssh -L 7080:123.45.67.123:7080 [email protected]
重要提示:我使用的是 CloudFlare,这也是问题的一部分。CloudFlare 阻止了端口 7080(以及其他端口;请参阅https://support.cloudflare.com/hc/en-us/articles/200169156-Identifying-network-ports-compatible-with-Cloudflare-s-proxy)。因此,为了使用 localhost 隧道作为 Carles Mateo 的答案,您需要将 OpenLiteSpeed 的管理端口更改为 /usr/local 中允许的 CloudFlare 端口(如 8443)/lsws/admin/conf/admin_config.conf
,重新启动 OpenLiteSpeed。并且还要禁用 CloudFlare 上的任何 SSL,至少在您配置不会引发安全错误的 SSL 之前。
总的来说,我使用 CloudFlare 保护 OpenLiteSpeed 管理页面免受脚本小子等攻击的解决方案是更改为并使用端口 8443 来配置 OLS 设置,然后通过 SSH 将该端口更改回 7080,该端口默认被 CloudFlare 阻止。
答案1
我认为您的问题是 OpenLiteSpeed 仅在本地主机地址上监听。
请确保正在监听 0.0.0.0,也就是所有地址。在我的示例中,有进程监听 127.0.0.1,还有进程监听 IPV4 0.0.0.0 和 IPV6 中的所有 IP :::
carles@fast:~$ sudo netstat -tulpn | grep LISTEN
[sudo] password for carles:
tcp 0 0 127.0.0.1:6942 0.0.0.0:* LISTEN 45335/java
tcp 0 0 127.0.0.1:41601 0.0.0.0:* LISTEN 45335/java
tcp 0 0 127.0.0.1:63342 0.0.0.0:* LISTEN 45335/java
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 827/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1143/sshd: /usr/sbi
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 455095/cupsd
tcp 0 0 127.0.0.1:34585 0.0.0.0:* LISTEN 160123/java
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2072/master
tcp 0 0 127.0.0.1:43195 0.0.0.0:* LISTEN 160123/java
tcp6 0 0 :::22 :::* LISTEN 1143/sshd: /usr/sbi
tcp6 0 0 ::1:631 :::* LISTEN 455095/cupsd
tcp6 0 0 :::25 :::* LISTEN 2072/master
如果您想调试流量是否来自其他站点,请在服务器上运行 tcpdump 并尝试从另一台机器连接。您将看到是否有该尝试。请先检查这一点并提供答案以继续调试。
但无论您的连接问题是什么,您都可以使用隧道从浏览器访问 localhost:8088。
如果您使用 Ubuntu 作为桌面,您可以执行以下操作:
ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT [USER@]SSH_SERVER
例如:
ssh -L 8088:123.45.67.89:8080 [USER@]123.45.67.89
然后在您的浏览器中,您只需连接到 localhost:8088,隧道就会产生神奇的效果,您的服务器将相信该连接是本地连接的,因此您可以从浏览器配置任何内容。
干杯
答案2
我强烈建议你不要打开这些端口。请执行以下操作。
通过 SSH 将外部机器连接到您的服务器并为您创建一个加密隧道。在您的终端中输入以下内容,您将能够浏览您想要的网页。
使用 ssh 在本地机器上打开终端。
ssh -L 8088:example.com:8088 [email protected]
只要您保持此终端打开,您现在就可以浏览所需的页面。https://localhost:8088
是的,您的浏览器会害怕该证书是错误的,只需单击“继续”,您就一切就绪了。
对另一个端口重复此操作。或者,如果您使用 Windows,请使用 putty 并检查 ssl 选项。WSL2 也适用于我。