Сильно зависит от приложения.
Большинство приложений J2EE работает на фермах кластера сервера, где основное обновление приложений может быть сделано с прокручивающимся обновлением. Т.е. выньте один сервер из фермы подсистемы балансировки нагрузки, ожидайте ее работы, чтобы закончить, обновить развертывание EAR, протестировать его, отложить его в lb ферме, вынуть следующее и повторное. Можно потребовать, чтобы отключение электричества сделало обновления схемы базы данных, только удостоверилось непротиворечивость данных. Обновления программного обеспечения базы данных могут обычно делаться без главного отключения электричества, Oracle является одним хорошим примером.
И вуаля, исправление:
<VirtualHost mysite.com:80>
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /home/rotate/public_html
ServerAdmin me@mysite.com
UseCanonicalName Off
</VirtualHost>
NameVirtualHost mysite.com:80
<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 mysite.com:443
<VirtualHost mysite.com:443>
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /home/rotate/public_html
ServerAdmin me@mysite.com
UseCanonicalName Off
</VirtualHost>
Решение состояло в том, чтобы просто заменить IP именем домена для всех настроек виртуального хоста, за исключением того, который должен перенаправлять / ограничивать прямой доступ по IP.
Вы не можете отключить прямой IP-доступ к вашему серверу через HTTPS, потому что имя хоста для вашего виртуального хоста зашифровано внутри сертификата SSL.
Клиенты должны подключаться к вашему IP-адресу, загрузить сертификат , прочтите содержимое, и тогда они смогут проверить правильность имени хоста.
Единственный другой способ - принудительно применить SNI , но это вызовет проблемы для пользователей, которые просматривают старые версии Интернета. Исследователь.
https://192.168.1.1
должна быть ошибка SSL (так как URL отличается от URL сертификата). SSLEngine на
Ответ может быть много намного проще.
Просто скопируйте это в нижнюю часть httpd.conf (обычно находится в / etc / httpd / conf)
<VirtualHost *:80>
ServerName localhost
Redirect 403 /
UseCanonicalName Off
UserDir disabled
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/html
</VirtualHost>
Затем, только когда посетители заходят на www.example.com, он может получить доступ к серверу.
Для добавления еще одного ответа, mod_security, если вам необходимо настроить, имеет правила, запрещающие доступ к серверу по ip-адресу
.Я написал этот простой код на PHP для ограничения прямого доступа по IP!
$servername = $_SERVER['SERVER_NAME'];
if($servername == 'your-domain.com'){
}elseif($servername == 'your-domain-with-www.com'){
}else{
die("Direct ip access not allowed!");
}
просто вставьте его в свой php файл и наслаждайтесь!
Это может быть просто, если вы не поместите свои файлы в стандартную директорию /var/www/html. Просто создайте другой каталог, скажем /web, например:
mkdir /web
mkdir /web/example
скопируйте файлы и измените chown :
sudo chown -R www-data:www-data /web
Затем создайте виртуальный хост со следующей конфигурацией :
<Directory /web/example>
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot /web/example
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
# Force SSL, you can remove this line
Redirect permanent / https://example.com/
ServerAdmin webmaster@example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# If you use SSL
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot /web/example
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# adapt this to your paths
SSLEngine on
SSLCertificateFile /etc/ssl/example/example_com.crt
SSLCertificateKeyFile /etc/ssl/example/example.key
SSLCertificateChainFile /etc/ssl/example/example_com.ca-bundle
</VirtualHost>
</IfModule>
Не забудьте включить ваш виртуальный хост, например:
sudo a2ensite example.com.conf
В установке Apcahe, имеющей несколько файлов .conf
, приоритет отдается первому загруженному файлу, а затем второму...аналогично. Таким образом, если вы находитесь на Ubuntu, файлы загружаются в лексикографическом порядке, поэтому самый "первый" файл .conf
, который будет загружен, будет иметь значение по умолчанию 000. conf
(, следовательно, 000 в его имени), находящийся в каталоге /etc/apache2/sites-available/
.
Таким образом, чтобы предотвратить применение любого другого правила, нам нужно перенести наше правило вверх этого первого файла.
и вы можете просто подготовить следующее правило к этому файлу.
<VirtualHost *:80>
ServerName default
DocumentRoot /var/www/html
#This part here, is crucial.
<Location />
Require all denied
</Location>
</VirtualHost>
Попробовали и протестировали на Ubuntu 16.4 x64 Apache версии > 2.4
Если вы используете более низкую версию Apache, попробуйте заменить Require all denied
из приведённого выше кода на . ...
<Location />
Order deny,allow
Deny from all
</Location>
Под ubuntu 20.04
Версия сервера: Apache/2.4.41 (Ubuntu)
я просто скопировал мой 000-default-ssl.conf как disabled-ip.ssl.conf и поместите ниже содержание
cd /etc/apache2/sites-available
cp 000-default-ssl.conf disable-ip.ssl.conf
содержимое файла vhost disable-ip.ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin root@localhost
ServerName localhost
ServerAlias XXX.XXX.XX.XX # here write ip adresss of your web site
UseCanonicalName Off
Redirect 403 /
ErrorDocument 403 "Sorry, direct IP access not allowed."
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
SSLCertificateFile /etc/letsencrypt/live/domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
,затем
a2ensite disable-ip.ssl.conf
service apache2 restart