土曜日は何もすることがなかったので、yii2をインストールしてデプロイしようとしました。インストールプロセス中に問題はありませんでしたが、nginxにデプロイしたときに502 Bad Gatewayの問題に遭遇しました。修理する。この問題は、yii2 をデプロイするときにこれまでに遭遇したことがないものなので、参考のためにここに書き留めておきます。
1. インストールおよび展開環境
オペレーティング システム: macOS、php バージョン: 5.6、nginx バージョン: 1.10.1、yii2 バージョン: 2.0。
2、yii2のインストール
yii2 のインストールは非常に簡単です。公式 Web サイトのマニュアルを参照するだけです。ここでインストールしたのは yii2-app-advanced (Yii 2 Advanced Project Template) です。プロジェクトのアドレスは github にあります。詳細については説明しません。
3、nginx での yii2 のデプロイメント
実際、yii2-app-advanced プロジェクトの README には、nginx にデプロイする方法が明確に記載されています。手順に従えば問題はないはずです。しかし、私はデプロイ中に怠けていて、README にある nginx デプロイ パラメータを直接使用したため、502 不正なゲートウェイ エラーが発生しました。
HTTP ステータス コードの 5 で始まる応答コードはすべてサーバー側が原因であるため、nginx ログを確認してください:
エラーログ:
アップストリーム: "fastcgi: //127.0.0.1:9090" を見ると、ポートが間違っているように見えたので、仮想ホストの構成を確認しました:
php-fpm の構成を見てみましょう:
案の定、nginx 仮想ホストによって指定された FastCGI サーバーのリスニング ポートが間違っているため、nginx が FastCGI サーバーから応答を取得できなくなります。したがって、ブラウザがリクエストを行うと、nginx は 502 ステータス コードをブラウザに返し、上流の FastCGI サーバーが応答しなかったことをブラウザに伝えます。
4、解決しました
nginx 仮想ホストで、fastcgi_pass で指定されたポートを正しく変更すると、このエラーは解決されます。
5、まとめ
(1) HTTP ステータス コード 5 で始まるエラーは、サーバー側によって発生します。 502 不正なゲートウェイは、ゲートウェイまたはプロキシとして動作しているサーバー (Web サーバー) が、上流から無効なメッセージを受信したことによって発生します。サーバー (fastcgi サーバー) への応答。
(2) fastcgi_pass は ngx_http_fastcgi_module モジュールの設定ディレクティブであり、nginx ドキュメントでの説明は次のとおりです。
リーリー参考:
HTTPステータスコード
fastcgi_pass
<strong>fastcgi_pass</strong> <code><em>address</em> ;
|
|
— | |
location , if in location
|