2017-01-06 3 views
0

内部マシンがこれらのURLにアクセスできるうちに、/api/private/のような外部からのリクエストをブロックする方法はありますか?nginx外部からのプライベートAPIのブロック

は現在、私はマシン

`` `

listen 80; 
server_name api.example.com; 

location /api/private/ { 
    allow 10.0.0.0/16; 
    deny all; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 

    proxy_pass http://backend; 
} 

` ``

に次のような構成を使用しかし、私は「api.example.com/を要求した場合、それは動作しません。内部マシンBからの「api/private/XXX」には、プライベートIPアドレス10.0.XXとパブリックIPアドレスがあります。 allow 10.0.0.0/16が動作しないように、パブリックIPアドレスを要求しているようです。

設定に問題がありますか、それとも対処するためのツールがありますか?

答えて

0

あなたのnginx設定が正しいように見えますが、これはあなたのDNSともっと関係していると思います。

api.example.comはどのIPに解決されますか?あなたのnginxサーバー上の公開または私設インターフェース?私は公共IPを推測しています。もしそうなら、マシンBはパブリックIPに行き、パブリックIPを使用しなければならないので、nginxはそれを内部として見ません。

スクリプトを変更するか、またはローカルDNSを変更してapi.example.comが内部IPを指すようにするかのいずれかで、マシンBが内部IPに対して要求を行うようにする必要があります。 linuxでは/ etc/hostsに次のような行を追加することでこれを行うことができます:api.example.com 10.0.0.X

関連する問題