Это способ узнать это для Apache. Допустим, у вас есть URL http://myserver.de:8081/somepath/index.html
Шаг 1: Найти процесс с открытым портом
Это можно сделать с помощью lsof в оболочке сервера, в которой перечислены открытые файлы (и порты), а также процессы, связанные с ним:
myserver:~ # lsof -i -P | grep LISTEN | grep :80
apache2 17479 root 4u IPv6 6271473 TCP *:80 (LISTEN)
Теперь мы знаем, что существует процесс под названием «apache2» с идентификатором процесса 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
Шаг 3: Поиск конфигурации процесса
Наше предыдущее исследование показало, что в командной строке не указан специальный файл конфигурации с параметром -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/"
Так как часть «mypath» в URL не имеет прямого соответствия, я могу с уверенностью предположить, что она находится ниже DocumentRoot / var / www /, поэтому результат моего поиска таков:
http://myserver.de:8081/somepath/index.html --> /var/www/mypath/index.html
Вы можете сделать поиск аналогичным образом для пристани.