Rendere apache accessibile solo tramite 127.0.0.1, è possibile?


19

Ho configurato il mio server Apache e PHP / MySQL funziona bene!

Ma il problema è, come posso mantenerlo privato, dal momento che è un server di solo sviluppo ? L'unico motivo per mantenere privato il contenuto è se uno script è andato storto, non voglio che vengano visualizzati errori Apache se è diventato un sito pubblico (e il fatto che anche altri condividano la stessa rete!), E sono meno è probabile che utilizzi il mio PC come webhost - ho maggiori probabilità di scendere utilizzando la route del provider di webhosting per un sito live reale.

Attualmente posso accedervi in ​​tre modi:

  • http: // localhost (o http://127.0.0.1 , il modo alternativo e l'IP di localhost ma in entrambi i casi è accettabile per me!)

  • http 192.168.0.1 (IP del mio router)

  • http pc-nome-qui (nome del mio PC, ovviamente questo varia tra i PC Windows!)

[nota, non puoi pubblicare link, quindi per gli altri due dovresti inserire la barra dei due punti / forward come nella prima].

Tuttavia, desidero accedervi solo tramite il primo. È in ascolto sulla porta 80 (e non voglio cambiarlo). Non è possibile o mi sbaglio? So un po 'di più su PHP / webdesign rispetto al lato rete delle cose, quindi questa è la prima volta per me!

Fondamentalmente, voglio che sia accessibile solo tramite localhost su quella macchina e non l'indirizzo IP esterno, o 192.168.0.1.

Dovrei modificare httpd.conf e usare deny su ogni sito testbed, o c'è qualche altra soluzione?

Esempio:

<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>
  • questo è un esempio ma non sono sicuro di cosa sia giusto o sbagliato qui!

Il mio sistema operativo è Windows 7 Ultimate.

Ho dato un'occhiata in giro per la rete, ma in parte mi è sembrato un po 'tecnico.

Cosa raccomanderesti?

Risposte:


34

Il modo più semplice per farlo è attraverso la Listendirettiva. Per impostazione predefinita, nel nostro httpd.conf è presente una riga che recita:

Listen *:80

Significa che risponderà alle richieste ro sulla porta 80 su tutti gli indirizzi di rete del tuo computer. Modificandolo in:

Listen 127.0.0.1:80

Dirà ad Apache solo di rispondere alle richieste sull'adattatore locale, ignorando così qualsiasi altra cosa.


12

L'opzione di ascolto è probabilmente la migliore, ma proprio come FYI, puoi farlo usando consenti / nega in questo modo

<Directory /www/vhosts/localhost/>
    Options All
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Directory>

Order deny,allowdice ad Apache di "Negare tutte le richieste se non espressamente consentito" ( Order allow,denyè l'opposto, IE consente tutte le richieste se non specificamente bloccato)
Deny from allfa una cosa simile Order deny,allowin quanto bloccherà tutte le richieste da tutti gli IP a meno che non le si apra specificamente. Sembra essere una pratica generale usare entrambi Order deny,allowe Deny from allma non sono sicuro al 100% del perché quando entrambi fanno la stessa cosa
Allow from 127.0.0.1dice "Consenti tutte le richieste da 127.0.0.1". 127.0.0.1 verrà mappato su localhost in modo da poter utilizzare http://127.0.0.1/ o http: // localhost / e sarà consentito

Ciò servirà un errore 403 (proibito) a chiunque richieda il sito no su localhost

Alcune altre cose utili;
Allow from 192.168.0.consentirà la richiesta da chiunque sulla tua rete (a condizione che la tua rete sia 192.168.0.0-192.168.0.255) Le
regole di autorizzazione / rifiuto sono elaborate in ordine, quindi

Deny from 192.168.0.2
Allow from 192.168.0.2

consentirebbe richieste e

Allow from 192.168.0.2
Deny from 192.168.0.2

negherebbe le richieste da 192.168.0.2

Così

Deny from 192.168.0.2
Allow from all

Consentirebbe richieste da 192.168.0.2, anche se era stato specificamente negato.

Puoi anche utilizzare le regole Consenti / Nega nei file .htaccess o in base alla directory


Assicurati che sia "Ordina nega, consenti", non "Ordina nega, nega". Un piccolo errore frequente che le persone commettono costantemente.
Scott Chu,

3

Ho apportato modifiche a doors.conf in / etc / apache2 in modo che ogni riferimento a Listen to a port ascoltasse solo localhost. Nessun altro file sembra avere il comando di ascolto. Dopo aver riavviato Apache, queste modifiche sembrano avere l'effetto desiderato.

/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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.