Зробити apache доступним лише через 127.0.0.1, чи це можливо?


19

Я налаштував свій сервер 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 і використовувати заперечення на кожному тестовому сайті, чи є якесь інше рішення?

Приклад:

<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.

У мене був огляд мережі, але деякі з них здалися мені трохи технічними.

Що б ти порадив?

Відповіді:


34

Найпростіший спосіб зробити це через Listenдирективу. За замовчуванням у нашому httpd.conf є рядок, який гласить:

Listen *:80

Це означає, що він відповість на запити порту 80 на всі мережеві адреси вашого комп'ютера. Змінивши його на:

Listen 127.0.0.1:80

Скаже апаше лише відповідати на запити локального адаптера, тим самим ігноруючи все інше.


12

Варіант прослуховування, мабуть, найкращий, але так само, як FYI, ви можете це зробити, використовуючи дозволити / заборонити, як це

<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навпаки, IE допускає всі запити, якщо спеціально не заблоковано)
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 буде відображати локальний хост, щоб ви могли використовувати http://127.0.0.1/ або http: // localhost /, і це буде дозволено

Це послужить помилкою 403 (Заборонено) для всіх, хто запитує сайт не на 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 або на основі каталогу


Звичайно, це "Порядок заперечуй, дозволяй", а не "Наказ дозволяй, заперечуй" Часта крихітна помилка, яку люди часто роблять.
Скотт Чу

3

Я вніс зміни до ports.conf в / etc / apache2, щоб кожна посилання на Слухати порт слухала лише 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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.