如何在没有信息的情况下确定安装了哪个网络服务器?

如何在没有信息的情况下确定安装了哪个网络服务器?

我最近接手了一个项目,因为一名开发人员给客户带来了问题。然而,由于缺乏文档(笑),我不知道网站文件存储在哪里,也不知道安装了什么网络服务器。

问题:

在 Linux 中,如何查看已安装的 Web 服务器?

在Linux中,如何找到Web服务器在文件目录中指向的位置? (请注意,这将取决于第一个问题的答案)

** 托管在Linode

答案1

一个基本的方法是netstat -tnlp在它应该服务的浏览器端口上使用额外的 grep。通常,这将是:

netstat -tnlp | grep 80
netstat -tnlp | grep 443

这应该列出拥有这些端口的进程 PID 和名称。这应该可以让您知道它是哪个服务器。然后,找到该服务器应用程序的配置文件,例如/etc/httpd.

答案2

不存在这样的事情Linux 中的网络服务器。存在多个可以完成这项工作的不同服务器。最常见的可能是 Apache httpd 和 nginx。

一般来说,您应该首先找出它是什么,然后查看它的配置。

要了解安装了哪个 Web 服务器,一种方法是netstat查看哪些端口正在监听 HTTP 流量常用的端口,最常见的是 80(用于未加密)和 443(用于加密/HTTPS)。但如果前面有代理,则可以使用任何端口,在这种情况下,8080 和 8443 是常见的选择。

另一种选择是利用您的发行版的软件包系统。使用的工具在很大程度上取决于您所使用的发行版,在 Debian 上dpkg -l | grep -i web,它可能会输出几个包,但相关的应该是 aming,并且很容易从描述中选择。

在这种特定情况下,仅查看两个常见选择是否在系统上进行了配置可能是有意义的。在大多数情况下,apache httpd 的配置/etc/apache(可能/etc/apache2)在 中,nginx 通常在/etc/nginx.

对于 apache httpd 来说,相关设置通常是DocumentRoot,对于 nginx 来说是最常见的root,但是两者都可以配置为几乎做任何事情(Apache httpd 支持 ModRewrite ,据说是图灵完备的,理论上使它能够做任何事情),所以找到您需要的东西可能有点困难。

答案3

在 Linux 中,如何查看已安装的 Web 服务器?

假设服务器完全可访问(sudoer/wheel 或 root),首先您需要检查是否有任何 Web 服务器打开的端口。通常是 80 和 443 ,但您可以通过检查进程列表中的 Web 服务器服务名称进行过滤。 (nginx / apache / httpd) netstat、ps、grep、find 工具会帮助你。

nginx -V httpd -V

命令将为您提供主配置文件位置,可用于查找单个站点配置。

https://www.linode.com/docs/web-servers/nginx/how-to-configure-nginx/ https://www.linode.com/docs/web-servers/apache/ 可能对你有帮助。

请注意,位置或路径因软件包安装方法以及传递给安装程序或编译期间的选项而异。最坏的情况是跨文件系统运行 find 命令来搜索具有名称索引或默认值的文件。

答案4

如果您的网络服务器在标准端口上运行,请参阅“netstat -tulpen |grep 80”。它应该告诉您哪个服务正在运行。现在您可以检查配置,您通常会在 /etc/servicename 中找到它们,例如:apache 配置可能会在 /etc/apache2/ 中找到。在那里您会得到文件所在位置的提示。可能还有其他服务使用其他端口,请仔细检查 netstat 输出,但不限于端口 80。

但请不要。您显然没有足够的知识来独自运行该系统。它迟早会被恶意者接管(可能更早)。你将负责。你的老板也会。这可能会产生不良后果。询问知道自己在做什么的人。请。

(crosspost:从 stackexchange 复制答案)

相关内容