Назад | Перейти на главную страницу

Сделать apache доступным только через 127.0.0.1, возможно ли это?

Я настроил свой сервер Apache, и PHP / MySQL работает хорошо!

Но проблема в том, как сохранить это в секрете, ведь это только разработка сервер? Единственная причина сохранить конфиденциальность контента - это если сценарий пошел не так, я не хочу, чтобы ошибки Apache появлялись, если он стал общедоступным (и тот факт, что другие тоже используют ту же сеть!), И я меньше скорее всего, я использую свой компьютер в качестве веб-хостинга - я, скорее всего, откажусь от маршрута, используя маршрут поставщика веб-хостинга для реального действующего сайта.

В настоящее время я могу получить к нему доступ тремя способами:

[обратите внимание, нельзя публиковать ссылки, поэтому для двух других вам нужно будет вставить двоеточие / косую черту, как в первом].

Однако я хочу получить к нему доступ только через первый. Он прослушивает порт 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>