Директива Apache Require IP не работает
У меня в файле конфигурации Apache есть следующее:
Define THUMBS_ROOT "//mysmbserver/website/thumbs"
Alias "/thumbs" "//mysmbserver/website/thumbs"
<Directory {THUMBS_ROOT}>
Options Indexes FollowSymLinks
<RequireAny>
Require ip 66.54.56.34
Require ip 159.101.84.4
</RequireAny>
</Directory>
LoadModule authz_core_module modules/mod_authz_core.so
Моя версия Apache — Apache/2.4.29 (Win64). (Да, я понимаю, что это старая версия Apache — я не могу обновить ее, поскольку это устройство)
Даже те, которые я добавил, RequireAny и RequireIP Apache игнорируют это и разрешают любому IP-адресу доступ к каталогу больших файлов. Я не могу понять, почему. Может ли кто-нибудь помочь мне понять?
Ситуация еще больше усложняется: у меня есть устройство балансировки нагрузки, установленное перед Apache, поэтому на самом деле мне нужно смотреть на X-Forwarded-For, а не на исходный IP-адрес. Я не уверен навскидку, нужно ли мне что-то делать, чтобы RequireIP обнаружил X-Forwarded-For?
В любом случае, он разрешает доступ независимо от IP.
Изменить: я также пробовал:
LoadModule authz_core_module modules/mod_authz_core.so
Define THUMBS_ROOT "//mysmbserver/website/thumbs"
Alias "/thumbs" "//mysmbserver/website/thumbs"
SetEnvIF X-Forwarded-For "66.54.56.34" AllowIP1
SetEnvIF X-Forwarded-For "159.101.84.4" AllowIP2
<Directory {THUMBS_ROOT}>
Options Indexes FollowSymLinks
<RequireAny>
Require env AllowIP1
Require env AllowIP2
</RequireAny>
</Directory>
Это тоже не работает.
1 ответ
Согласно документации , путь в<Directory>
Директива должна быть путем к файловой системе, а не псевдонимом или переменной. Поэтому я думаю, что ваша директива не имеет никакого эффекта, поскольку нет пути{THUMBS_ROOT}
в файловой системе.
Возможные варианты:
-
<Directory //mysmbserver/website/thumbs>
. Я не знаю, сработает ли это, но возможно, если Windows будет рассматривать его как действительный путь к файловой системе. -
<Location /thumbs>