サーバーは、それが唯一の内部IPファイアウォール/ロードバランサからのパケットの転送を行い172.xx.xxx.xxx
を提供します理由である、パブリックIPアドレスを持っていない可能性があります公開されたIPアドレス。正確な配置は、誰がサーバーをホストしているかによって異なります。
環境変数としてパブリックIPアドレスをMeteorに渡すか、ハードコード(推奨しません)またはデータベースコレクションに入れる必要があります。
アップデート:ここではMongoのコレクションに保存された環境変数を使用したソリューションです。
は、サーバーのセットアップを使用して、シェルスクリプトや設定ファイルのいずれかで、環境変数を指定することができますと仮定。私の例では、Nginx/Passengerを使用しています。サーバーで
# Tell the app where MongoDB is
passenger_env_var MONGO_URL mongodb://localhost:27017/myproject;
# Tell the app what its other settings are
passenger_env_var ROOT_URL https://dev.myproject.online;
passenger_env_var IMAGE_DIR /var/www/imgserver/public;
、流星の方法は、環境変数を読み込み、コレクションにそれらを挿入します。
// Get a list of environment vars and put them in the Environs collection
// - client code will pick these up and handle them.
getEnvirons: function() {
Environs.remove({}); // Force them to be re-read every server startup
var toGet = ["ROOT_URL", "IMAGE_DIR"]; // Edit this as you please
_.each(toGet, function(e){
var val = process.env[e];
Environs.insert({name: e, value: val});
});
},
サーバーで流星の起動ブロックから上記を呼び出します。
残っていることは、Environsコレクションを公開して購読することです。 (私はあなたがそれをする方法を知っていると仮定しています)。環境変数データの読み込みはもちろん非同期になるので、コード内で許可してください
確かに、あなたのプロジェクトでうまくいけば、これを動作させる方法を共有してください。私はそれをお願い申し上げます。 –
私はあなたのために答えを更新しました – Mikkel
私は通常のMupでDigital OceanのUbuntuセットアップを使用しています。どのファイルに環境変数を入れる必要がありますか?私は今、私のアプリの中の 'Meteor.isServer'に設定しています。それはユーザーのIPを取得するために非常に長いプロセス+データベースの挿入です。 –