Я хочу ограничить прямой IP-доступ к своему сайту. Я нашел несколько решений, связанных с .htaccess, но ни одно из них не работает. Я также нашел одно решение через конфигурацию виртуальных хостов apache, которое работало нормально, пока я не установил SSL-сертификат через CPanel. Я абсолютно не знаю, что было изменено в файле httpd.conf, но теперь настройка перенаправления не работает, даже если я удалю сертификат SSL.
Вот мои текущие настройки виртуальных хостов:
NameVirtualHost 192.168.1.1:80 NameVirtualHost *
<VirtualHost 192.168.1.1:80>
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /home/rotate/public_html
ServerAdmin me@mysite.com
UseCanonicalName Off
## User rotate # Needed for Cpanel::ApacheConf
UserDir disabled
UserDir enabled rotate
ScriptAlias /cgi-bin/ /home/rotate/public_html/cgi-bin/
</VirtualHost>
<VirtualHost 192.168.1.1:80>
ServerName 192.168.1.1
Redirect 403 /
ErrorDocument 403 "Sorry, direct IP access not allowed."
DocumentRoot /usr/local/apache/htdocs
ServerAdmin me@mysite.com
UseCanonicalName Off
UserDir disabled
</VirtualHost>
<VirtualHost *>
ServerName server.mysite.com
DocumentRoot /usr/local/apache/htdocs
ServerAdmin me@mysite.com
UserDir disabled
</VirtualHost>
NameVirtualHost 192.168.1.1:443
<VirtualHost 192.168.1.1:443>
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /home/rotate/public_html
ServerAdmin me@mysite.com
UseCanonicalName Off
UserDir disabled
UserDir enabled rotate
ScriptAlias /cgi-bin/ /home/rotate/public_html/cgi-bin/
SSLEngine on
#SSL stuff here
</VirtualHost>
IP и имена были заменены на общие. Часть «Redirect 403 /» не работает с момента установки сертификата SSL. Буду признателен, если кто-нибудь сможет пролить свет на то, что я делаю здесь неправильно. Благодарю.
Ответы:
И вуаля, исправить:
Решение состояло в том, чтобы просто заменить IP-адрес доменным именем для всех настроек виртуального хоста, за исключением того, который должен перенаправлять / ограничивать прямой IP-доступ.
источник
Ответ может быть намного проще.
Просто скопируйте это в нижнюю часть httpd.conf (обычно находится в / etc / httpd / conf)
Только тогда, когда посетители заходят на www.example.com, он может получить доступ к серверу.
источник
Вы не можете отключить прямой IP-доступ к вашему серверу через HTTPS, потому что имя хоста для вашего виртуального хоста зашифровано в сертификате SSL.
Клиенты должны подключиться к вашему IP-адресу, загрузить сертификат, прочитать содержимое, а затем они могут проверить правильность имени хоста.
Единственный другой способ - принудительное использование SNI , но вы будете создавать проблемы для пользователей, которые просматривают старые версии Internet Explorer.
источник
https://192.168.1.1
должны иметь ошибку SSL (потому что URL отличается от сертификата).<VirtualHost *:443> SSLEngine on </VirtualHost>
источник
Я считаю, что это то, что вы ищете
http://www.htaccess-guide.com/deny-visitors-by-ip-address/
источник
Чтобы добавить еще один ответ, mod_security, если его стоит настроить, содержит правила, запрещающие доступ к серверу по IP-адресу.
источник
Это может быть легко, если вы не поместите свои файлы в каталог по умолчанию / var / www / html. Просто создайте другой каталог, например, скажем / web:
скопируйте ваши файлы и измените chown:
Затем создайте виртуальный хост со следующей конфигурацией:
Не забудьте включить виртуальный хост, например:
источник
В настройке Apcahe, имеющей несколько
.conf
файлов, приоритет отдается первому загруженному файлу, а затем второму ... аналогично. Таким образом, если вы работаете в Ubuntu, файлы загружаются в лексикографическом порядке, поэтому самым «первым».conf
файлом, который будет загружен, будет000-default.conf
( следовательно, 000 в его названии ), находящийся в/etc/apache2/sites-available/
каталоге.Поэтому, чтобы предотвратить применение любого другого правила, нам нужно переместить наше правило в начало этого первого файла.
и вы можете просто добавить следующее правило к этому файлу.
Пробовал и тестировал на Ubuntu 16.4 x64 Apache
> 2.4
Если вы используете более низкую версию Apache, попробуйте заменить
Require all denied
приведенный выше код на ...источник
Я написал этот простой код на PHP, чтобы ограничить прямой IP-доступ!
просто вставьте в свой php файл и наслаждайтесь!
источник