gpt4 book ai didi

linux - 查找托管目录 Jetty/Apache

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:32 27 4
gpt4 key购买 nike

假设我有一个由 Jetty 或 Apache 托管的目录(我想要两者的答案),我知道包括端口在内的 URL,并且我可以登录到服务器。

如何找到某个端口托管的目录?

我也想走另一条路,我在服务器上有一个文件夹,我知道它是否被托管,但我不知道端口,所以我无法在网络浏览器中找到它。

如何找到正在托管的目录列表?

这已经困扰我很久了,但我以前从来没有费心去问过!

谢谢。

最佳答案

这是为 Apache 找到它的方法。假设您有一个 URL http://myserver.de:8081/somepath/index.html

第 1 步:找到打开给定端口的进程

您可以通过在服务器的 shell 中使用 lsof 来执行此操作,它会列出打开的文件(和端口)以及与其关联的进程:

myserver:~ # lsof -i -P | grep LISTEN | grep :80
apache2 17479 root 4u IPv6 6271473 TCP *:80 (LISTEN)

我们现在知道有一个名为“apache2”的进程,进程 ID 为 17479

第 2 步:了解有关流程的更多信息

我们现在可以查看进程的环境,其中应该提供更多信息:

myserver:~ # (cat /proc/17479/environ; echo) | tr "\000" "\n"
PATH=/usr/local/bin:/usr/bin:/bin
PWD=/
LANG=C
SHLVL=1
_=/usr/sbin/apache2

好的,进程可执行文件是/usr/sbin/apache2。现在让我们看看命令行。

myserver:~ # (cat /proc/17479/cmdline; echo) | tr "\000" " "
/usr/sbin/apache2 -k start

第三步:找到进程的配置

我们之前的检查表明没有在命令行中使用 -f 选项给出特殊的配置文件,因此我们必须找到该进程的默认位置。这取决于如何将默认命令行编译成 apache2 可执行文件。这可以以某种方式从中提取,但显然它是 Apache 2 在我的机器 (Debian Etch) 上的默认位置,即/etc/apache2/apache2.conf。

第 4 步:检查 Apache 配置文件

这又需要一些有关 apache 配置的知识。配置文件可以包含其他文件,因此我们需要先找到这些文件:

myserver:~# cat /etc/apache2/apache2.conf | grep -i ^Include
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/

一个不错的列表。这些配置告诉您有关您的配置的所有信息,并且有许多选项可以将文件映射到 URL。特别是 apache 可以为不同的域提供不同的目录,如果这些域都映射到同一个 IP。因此,假设在您的服务器上托管了一大堆域,那么“myserver.de”要么由默认配置映射,要么由专门为该域服务的配置映射。

最重要的指令是 DocumentRoot、Alias 和 Redirect。在我的系统上,以下给出了一个快速概述(省略注释):

myserver:~# ( cat /etc/apache2/apache2.conf; cat /etc/apache2/sites-enabled/* ) | grep 'DocumentRoot\|Alias\|Redirect'
Alias /icons/ "/usr/share/apache2/icons/"
DocumentRoot /var/www/
RedirectMatch ^/$ /apache2-default/
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
Alias /doc/ "/usr/share/doc/"
DocumentRoot /var/www/
RedirectMatch ^/$ /apache2-default/
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
Alias /doc/ "/usr/share/doc/"

由于 URL 的“mypath”部分没有直接匹配,我可以假设它位于 DocumentRoot/var/www/下面,所以我的搜索结果是

http://myserver.de:8081/somepath/index.html --> /var/www/mypath/index.html

您可以用类似的方式查找 jetty 。

关于linux - 查找托管目录 Jetty/Apache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2771562/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com