web-dev-qa-db-ja.com

Apacheを127.0.0.1経由でのみアクセス可能にします。これは可能ですか?

Apacheサーバーを設定しました。PHP/ MySQLは問題なく動作します。

しかし問題は、それが開発専用サーバーであるため、どのように私はこれをプライベートに保つのですか?コンテンツを非公開にする唯一の理由は、スクリプトが失敗した場合、それが公開サイトになったときにApacheエラーが表示されないようにしたい(そして他の人も同じネットワークを共有しているという事実!) PCをウェブホストとして使用する可能性が高い-実際のライブサイトのウェブホスティングプロバイダールートを使用する可能性が高くなります。

現在、3つの方法でアクセスできます。

  • http:// localhost (または http://127.0.0.1 、別の方法とlocalhostのIPですが、どちらの方法も受け入れられます!)

  • http 192.168.0.1(私のルーターのIP)

  • http pc-name-here(私のPCの名前、明らかにこれはWindows PCによって異なります!)

[注、リンクを投稿することはできないため、他の2つについては、最初のスラッシュと同様にコロン/スラッシュを挿入する必要があります]。

しかし、私は最初のものを介してそれにアクセスしたいだけです。それはポート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です。

私はネットの周りを見ましたが、それのいくつかは私にとっては少し技術的に思えました。

あなたは何をお勧めします?

19
linthurst53

これを行う最も簡単な方法は、Listenディレクティブを使用することです。デフォルトでは、httpd.confに次の行があります。

Listen *:80

つまり、コンピュータのすべてのネットワークアドレスのポート80でro要求に応答します。それを次のように変更します。

Listen 127.0.0.1:80

ローカルアダプターの要求にのみ応答するようにApacheのみに指示し、それ以外は無視します。

35
SmallClanger

リッスンオプションはおそらく最良ですが、参考までに、このように許可/拒否を使用してそれを行うことができます

<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はその逆です。つまり、特別にブロックされていない限り、すべてのリクエストを許可します)
Deny from allは、特に開かない限り、すべてのIPからのすべてのリクエストをブロックするという点でOrder deny,allowと同様の機能を果たします。 Order deny,allowDeny 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 / を使用でき、許可されます

これは、localhostでサイトにnoを要求するすべてのユーザーに403(禁止)エラーを提供します

他のいくつかの便利なもの;
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ファイルまたはディレクトリごとに許可/拒否ルールを使用することもできます

13
Smudge

/ etc/Apache2のports.confに変更を加えて、Listen to a portの各参照がlocalhostのみをリッスンするようにしました。他のファイルにはlistenコマンドが含まれていないようです。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>
3
Mathew Peet