Я настроил свой сервер Apache, и PHP / MySQL работает хорошо!
Но проблема в том, как сохранить это в секрете, ведь это только разработка сервер? Единственная причина сохранить конфиденциальность контента - это если сценарий пошел не так, я не хочу, чтобы ошибки Apache появлялись, если он стал общедоступным (и тот факт, что другие тоже используют ту же сеть!), И я меньше скорее всего, я использую свой компьютер в качестве веб-хостинга - я, скорее всего, откажусь от маршрута, используя маршрут поставщика веб-хостинга для реального действующего сайта.
В настоящее время я могу получить к нему доступ тремя способами:
http: // localhost (или http://127.0.0.1, альтернативный способ и IP-адрес localhost, но для меня приемлем любой вариант!)
http 192.168.0.1 (IP моего роутера)
http pc-name-here (имя моего ПК, очевидно, это зависит от ПК с Windows!)
[обратите внимание, нельзя публиковать ссылки, поэтому для двух других вам нужно будет вставить двоеточие / косую черту, как в первом].
Однако я хочу получить к нему доступ только через первый. Он прослушивает порт 80 (и я не хочу это менять). Это невозможно, или я ошибаюсь? Я знаю о PHP / веб-дизайне немного больше, чем о сетевой стороне вещей, поэтому для меня это впервые!
По сути, я хочу, чтобы он был доступен только через localhost на этом компьютере, а не по внешнему IP-адресу или 192.168.0.1.
Нужно ли мне редактировать httpd.conf и использовать deny на каждом тестовом сайте или есть какое-то другое решение?
Пример:
<Directory /www/vhosts/localhost/>
Options All
AllowOverride All
order allow,deny
allow from 127.0.0.1
deny from 192.168.0.1
deny from my-pc-name
</Directory>
Моя операционная система - Windows 7 Ultimate.
Я посмотрел сеть, но некоторые из них показались мне немного техническими.
Что бы вы порекомендовали?
Самый простой способ сделать это - через Listen
директива. По умолчанию в нашем httpd.conf есть строка, которая гласит:
Listen *:80
Это означает, что он будет отвечать на запросы ro через порт 80 на всех сетевых адресах вашего компьютера. Изменив его на:
Listen 127.0.0.1:80
Сообщит apache только отвечать на запросы локального адаптера, игнорируя все остальное.
Вариант прослушивания, вероятно, лучший, но, к вашему сведению, вы можете сделать это с помощью разрешения / запрета, например
<Directory /www/vhosts/localhost/>
Options All
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
Order deny,allow
сообщает Apache «Отклонять все запросы, кроме специально разрешенных» (Order allow,deny
наоборот, I.E. разрешить все запросы, если они специально не заблокированы)
Deny from all
делает то же самое с Order deny,allow
в этом случае он будет блокировать все запросы со всех IP-адресов, если вы их специально не откроете. Кажется общей практикой использовать оба Order deny,allow
и Deny from all
но я не уверен на 100%, почему, когда они оба делают одно и то же
Allow from 127.0.0.1
говорит: «Разрешить все запросы от 127.0.0.1». 127.0.0.1 будет отображаться на localhost, поэтому вы можете использовать http://127.0.0.1/ или http: // localhost / и это будет разрешено
Это приведет к ошибке 403 (Запрещено) для всех, кто запрашивает сайт no на localhost
Еще кое-что полезное;
Allow from 192.168.0.
разрешит запросы от кого-либо в вашей сети (если ваша сеть 192.168.0.0-192.168.0.255)
Правила разрешения / запрета обрабатываются по порядку, поэтому
Deny from 192.168.0.2
Allow from 192.168.0.2
разрешит запросы и
Allow from 192.168.0.2
Deny from 192.168.0.2
будет отклонять запросы от 192.168.0.2
Так
Deny from 192.168.0.2
Allow from all
Разрешил бы запросы от 192.168.0.2, даже если он был специально отклонен.
Вы также можете использовать правила разрешения / запрета в файлах .htaccess или для отдельных каталогов.
Я внес изменения в ports.conf в / etc / apache2, чтобы каждая ссылка на Listen to a port слушала только localhost. Похоже, что никакие другие файлы не имеют команды прослушивания. После перезапуска apache эти изменения, похоже, дали желаемый эффект.
/etc/apache2/ports.conf
NameVirtualHost *:80
########################## Listen 80
Listen 127.0.0.1:80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
###############################Listen 443
Listen 127.0.0.1:443
</IfModule>
<IfModule mod_gnutls.c>
##################################Listen 443
Listen 127.0.0.1:443
</IfModule>