1

別のサーバー(Amazonではない)にインストールされている、使用しているサービスにフックするWebサイトをAmazonec2に移行しました。そのサービスのAPIへのアクセスはIPに制限されており、PHPで*http_build_query*および*stream_context_create*を使用してXMLデータを送信することによって行われます。

新しいサーバーからサービスに接続する場合は、最初に新しいIPを追加するようにベンダーに依頼する必要があります。私はElasticIPを送信することでそれを行いましたが、機能しません。デバッグしようとしているときに、$ _SERVER['SERVER_ADDR']の出力がec2インスタンスのプライベートIPであることに気付きました。反対側のサーバーが同じデータを受信して​​いると想定しているため、プライベートIPを認証しようとします。プライベートIPからのアクセスも許可するようにベンダーに依頼しました。まだ実装されていないため、問題が解決するかどうかはわかりませんが、APIの動作を理解している限り、次のようになります。データを解析して、接続元のIPに戻します。これは、サーバーがAmazonクラウドの外部にあるため不可能です。

私はここで本当に明白な何かを見逃すかもしれません。rc.local(ec2インスタンスでCENT OSを実行)にec2-associate-addressを使用して起動時にElastic IPをサーバーに関連付けるコマンドを追加しました。これは、別の外部サーバーへのMySQL接続を機能させるのに役立つようです。しかし、上記のAPIでは運がありません。

1つを除外すると、APIはHTTPSを介してアクセスされ、セキュリティグループでポート80と443(およびmysqlポート)が有効になってテストされます。ドメインとSSLは正常に実行されています。

ヒントは高く評価されています-私はすでにたくさん検索しましたが、これまでのところ有用なものは見つかりませんでした。

4

1 に答える 1

0

VM で両方の IP (プライベートとエラスティック) がアクティブになっているようです。を実行して確認しますifconfig -a。それが起こっている場合、外部トラフィックに使用される IP は、リモート アドレスと VM のルーティング テーブルに依存します。接続ごとに異なる場合もあります。

それが起こっている場合、最も迅速な修正ifconfig downは、プライベート アドレスを持つインターフェイスを修正することです。これにより、すべての外部接続に対してエラスティック アドレスのみが残されます。これで問題が解決した場合は、エラスティック IP がアクティブになった後にプライベート IP を自動的に停止するスクリプトを作成できます。または、エラスティック IP がこの VM に永続的に割り当てられ、プライベート IP が本当に必要ない場合は、次のことができます。この VM からプライベート IP の関連付けを完全に解除します。

于 2012-04-25T06:12:37.613 に答える