最近、多くの PHP 開発者を悩ませている問題があります。それは、外部ネットワークからはイントラネットにアクセスできるが、内部ネットワークからはアクセスできないということです。この問題は難しいかもしれませんが、解決するのはそれほど難しいことではありません。
まず、この問題の原因を理解する必要があります。内部ネットワークから外部ネットワークにアクセスする場合、通常はNAT変換を介してアクセスします。 NAT 変換では、外部ネットワーク IP を内部ネットワークにマッピングするだけでなく、要求されたポートもマッピングします。ただし、外部ネットワークから内部ネットワークにアクセスする場合、内部ネットワークのIPはプライベートIPであるため、外部ネットワークから直接アクセスすることはできません。したがって、リバース プロキシを実行して、外部ネットワークが内部ネットワークにアクセスできるようにする必要があります。
この問題を解決する方法を見てみましょう。外部ネットワークのドメイン名が「www.example.com」、内部ネットワーク IP が「192.168.1.100」であると仮定すると、外部ネットワークにリバース プロキシ サービスを展開することでこの問題を解決できます。これは、Nginx や Apache などの一般的なリバース プロキシ サーバーを使用して実現できます。
Nginx では、Nginx 構成ファイルを編集することでリバース プロキシを実装できます。まず、次のコードを Nginx 構成ファイルに追加します。
server { listen 80; server_name www.example.com; location / { proxy_pass http://192.168.1.100:80; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
このコードの機能は、「www.example.com」へのすべてのアクセス要求をイントラネット内の IP にプロキシすることです。このうち、proxy_pass
パラメーターは、イントラネットの IP アドレスとポート番号を指定します。 proxy_set_header
パラメーターは、プロキシ時のコードをより正確にするためにヘッダー情報を設定するために使用されます。具体的な情報については、Nginx 公式ドキュメントを参照してください。
Apache では、mod_proxy モジュールを使用してリバース プロキシを実装できます。まず、httpd.conf で mod_proxy モジュールを有効にする必要があります。
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
次に、構成ファイルに次のコードを追加します。
<VirtualHost *:80> ServerName www.example.com ProxyRequests Off ProxyPass / http://192.168.1.100:80/ ProxyPassReverse / http://192.168.1.100:80/ ErrorLog logs/reverse-proxy-error.log CustomLog logs/reverse-proxy-access.log common </VirtualHost>
このコードの機能は、次のコードのすべてのペアを削除することです。 「www.example.com」アクセス要求は、イントラネット内の IP にプロキシされます。このうち、ProxyPass
はイントラネット内のIPアドレスとポート番号を指定し、ErrorLog
とCustomLog
はエラーログとアクセスログのパスを設定するために使用されます。それぞれ。具体的な情報については、Apache 公式ドキュメントを参照してください。
要約すると、PHP が外部ネットワークでも内部ネットワークでも開けないという問題を解決するには、外部ネットワークにリバース プロキシ サービスを展開する必要があります。リバースプロキシを設定することで、すべての外部ネットワークリクエストを内部ネットワークにプロキシすることができ、内部ネットワークと外部ネットワーク間の通信を実現します。
以上が外部ネットワークを開くときに PHP が内部ネットワークを開けない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。