試行錯誤の末、思いつきました。これが私が持っているものです...
1 つのサーバーで 1 つの IP アドレスを使用してこれを実現できますか? または、1 つのサーバーでホストし、もう 1 つのサーバーで mod_proxy を使用できますか?
A: 1 つの IP アドレスを持つ ON サーバーは問題なく動作します。すべてのプロキシ機能は、私の場合は :9000 のポートを介して処理されます。ポート番号の選択は本当にあなた次第です。9000 は単に高い数値であり、他のノード機能と競合しませんでした。また、私が知る限り、それは書かれていない標準のようです。
1つのサーバーでこれを行うことができれば。もしそうなら、一般的なセットアップ (A から B) は何ですか? 1 つまたは 2 つの仮想ホスト?
A:これはおそらく、私の Apache 仮想ホストのセットアップを見ることで最もよく説明できます...
私は SSL を使用しているため、ポート :80 のすべての HTTP リクエストは HTTPS に書き換えられます。
仮想ホスト *:80
RewriteEngine オン
RewriteCond %{HTTPS} オフ
RewriteRule (.*) http(s)://%{HTTP_HOST}%{REQUEST_URI}
/仮想ホスト
ポート :3000 でノード アプリを実行しているため、すべてのトラフィックは標準の :443 からポート :3000 に、またはその逆にルーティングされます。基本的にポート :3000 は、パブリックに関する限り、サーバー プロキシを介してプライマリ ドメイン名になります。
仮想ホスト *:443
RewriteEngine オン
ProxyRequests オフ
SSLエンジンオン
オンの SSLProxyEngine
SSLCertificateFile /pathToCert/sslCert.crt
SSLCertificateKeyFile /pathToKey/sslKey.key
位置 /
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
/位置
/仮想ホスト
Cross Domain HTTP POST リクエストのリバース プロキシとしてポート :9000 を割り当てました。ProxyPass および ProxyPassReverse ディレクティブは、基本的に、自分のドメインのアドレスで作成した HTTP 要求の URL を書き換えます。
https://MySite.com:9000/?request¶ms&here
となります
https://SomeOtherSiteThanMine.com/?request¶ms&here
このようにして、自分のドメインに対してリクエストを行っているとブラウザに思わせます。また、リクエスト CORS がプロキシと互換性を持つようにする「ヘッダー セット」行にも注意してください。
仮想ホスト *:9000
RewriteEngine オン
ProxyRequests オフ
SSLエンジンオン
オンの SSLProxyEngine
SSLCertificateFile /pathToCert/sslCert.crt
SSLCertificateKeyFile /pathToKey/sslKey.key
ProxyPass / https://SomeOtherSiteThanMine.com/
ProxyPassReverse / https://SomeOtherSiteThanMine.com/
ヘッダー セット Access-Control-Allow-Origin "*"
ヘッダー セット Access-Control-Allow-Methods "POST"
/仮想ホスト
3. ProxyPass および ProxyReversePass ディレクティブについて説明します。外部サービスの URL をここに追加する必要がありますか?
A:上記
4 を参照してください。一方通行の道を完全に間違った方向に行っているだけですか?
A:いいえ、完全にうまくいきました。
誰かがこの方法に問題を見つけたら、ぜひ声をかけてください。漠然と説明されたいくつかの例をつなぎ合わせただけです。