У меня есть домашний сервер, у которого нет общедоступного IP-адреса (Интернет LTE), поэтому я использую другой сервер с общедоступным IP-адресом для выполнения обратного перенаправления портов.
Я перенаправляю порт 443 и 80, используя следующие параметры ssh на моем домашнем сервере:
-R *:80:*:80 -R *:443:*:443
Все работает отлично, и веб-сайт моего домашнего сервера доступен из Интернета через общедоступный IP-адрес. Но у меня есть одна проблема - я пропускаю IP-адреса клиентов в журналах доступа к apache. Вместо IP-адресов у меня там просто записи с :: 1
вместо IP-адреса:
::1 - - [11/Mar/2017:14:40:57 +0100] "GET / HTTP/1.0" 200 1775 "-" "-"
Я думаю, это результат обратной переадресации портов. Я попытался добавить дополнительные параметры в конфигурацию Apache LogFormat, но безуспешно. Есть ли способ сохранить реальный IP-адрес клиента в журналах доступа apache?
Вы не можете получить IP-адрес клиента при переадресации через SSH-туннель. Всё, что видит Apache, это удалённый IP TCP-соединение, которое является конечной точкой вашего SSH туннеля.
Чтобы получить реальный IP клиента, вам нужно настроить обратный прокси на вашем сервере, который имеет публичный IP-адрес, а затем заставить его добавить IP клиента в HTTP-заголовки.
После этого вам нужно добавить в ваш Apache конфигурацию, которая включает IP в HTTP-заголовках в лог-файл.
.