[解決済み] 本番では、localhost:1337は何になるのでしょうか?
質問
この質問は非常に基本的なものだと思いますが、私を混乱させています。 現在、開発モードでは私のバックエンドはlocalhost:1337で動作しています(正確にはStrapi cmsを使用しています)。 しかし、ウェブサイトがウェブサーバーにデプロイされたとき、それは何に変わるのでしょうか?
具体的には、ウェブサイトはルートではなく、サブディレクトリに存在することになりますが、これに影響するでしょうか?
現在、私のプロジェクト内で画像のsrcとして使用しているURLはこれです。 localhost:1337/uploads/image-example.jpg
私は、プロジェクトがデプロイされた後、新しいURLが何になるかを理解しようとしています、さらに、それはルートではなくサブディレクトリにデプロイされます
ありがとうございました。
解決方法は?
何もしなくていいはずです。
すべてではないにしても、ほとんどのウェブホストは
PORT
環境変数でアプリケーションサーバーを設定します。Strapiでコードを検索してみたところ
これ
:
"port": "${process.env.PORT || 1337}",
を使って環境変数を読み込んだり、デフォルト値を使ったりします (ランダムなポートを要求する代わりに
0
開発中の予測可能性のため)。もしあなたが彼らのスタータースクリプトを使ったのであれば、あなたのアプリケーションも同じだと思うのですが。
多くの場合、これで十分ですが、2つの例外があります。
-
アプリケーションサーバーが自分のURLを知らない場合、相対URLの生成しかできません。例えば、自分自身へのリンクを含む電子メールを作成することはできません。
HTTPリダイレクトは、むかしは絶対URLが必要でした。 が、その後、改正されました。 .
-
ポートだけを設定すると、アプリケーションが
/
. 例えば、(Herokuではなく)自分でWebサーバーを設定していて、アプリケーションを/blog
この場合、アプリケーションに正しいプレフィックスを付けるように指示する方法が必要です。URLを相対パスのみに制限することで回避できるかもしれませんが、面倒そうですし、普通はやらないと思います。それに、受信したリクエストは、実はユーザーが見ているURLを判別するのに十分な情報を持っていないんです。その代わり、帯域外のURLをアプリに表示するんですね。
例えば、Grafana には
root_url
変数 の設定ファイルに完全なURLプレフィックスを記述すると、Prometheusでは は-web.external-url
引数 など。しかし Herokuは、アプリケーションを以下の場所にマウントすることができないと思います。
/
ということで、ポートで十分です。
ここでは、Heroku上で動作する完全なサーバーを作成し、その環境をお見せします。
const app = require("express")();
app.set("json spaces", 2);
app.get("/", (req, res) => {
res.send(process.env);
});
const server = app.listen(process.env.PORT, () => {
console.log('server is up on', server.address());
});
は
PORT
環境にはアプリ名が含まれないため、この変数が必要なすべての設定です。
アプリの本番URLをハードコーディングすると、メンテナンスの負担になるため 設定可能であることを確認する もし、アプリにURLを教えることになったら、コマンドライン引数か環境変数で指定します。
具体的に言うと、画像のsrcは以下のようになります。
/uploads
.
関連
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】エラー TRK0005: 位置特定に失敗しました。"CL.exe"
-
[解決済み】POSTできない/expressを使用するとエラーが発生する
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] S3 Bucket に何かを送信しようとすると、AWS Missing credentials が表示される (Node.js)
-
[解決済み] nvm は npm config の "prefix" オプションと互換性がありません。
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] npmはどこにパッケージをインストールするのですか?
-
[解決済み] Node.js + Nginx - 今度は何?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「安全なTLS接続が確立される前にクライアントのネットワークソケットが切断されました」(ノード10
-
[解決済み】Google spreadsheet api Requestに不十分な認証スコープがあった。
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み】MongoDBでコレクションを日付で並べ替えるには?
-
[解決済み】Nodejsの解決方法:Error: ENOENT: そのようなファイルまたはディレクトリがありません
-
[解決済み】Mongooseで、日付でソートするにはどうしたらいいですか?(node.js)
-
[解決済み] bodyParser は非推奨です express 4
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] エラーです。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりません。
-
[解決済み] "app.use(express.cookieSession())" に "secret" オプションが必要です。