nginx:[emerg]unknown「connection_upgrade」variable解決と思考

4603 ワード

に質問
clipboard.png一日にプライマリブランチを更新した後にnginxを起動し、結果エラー:nginx: [emerg] unknown "connection_upgrade" variable解決策
ネットで調べてみると、nginxプロファイルに問題があることがわかりました.下のmapコードブロックを補充すればいいです.
   http {
    map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
   }

    server {
        location / {
                    #…
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
            }
        }
}

考える
問題は解決したが、なぜこのような状況が発生したのか、解決方法の本当の原理を知りたい.このブログでは、nginx websocketに問題が発生していることがわかります.
Websocketとは
従来のhttp通信モードは、クライアントが要求を開始し、サービス側が要求を受信して応答することである.nginx: [emerg] unknown
Websocketプロトコルはhttpの握手チャネルを多重化しており、具体的には、クライアントがHTTP要求を通じてWebSocketサービス側とアップグレードプロトコルを協議することを指す.
第一歩は、接続を確立し、クライアントはhttpメッセージのフォーマットを使用してプロトコルのアップグレードの要求を開始し、サービス側はプロトコルのアップグレードに応答する.nginx: [emerg] unknown
第2のステップは、データを交換し、クライアントとサービス側がwebsocketプロトコルを使用して双方向通信を行うことができる.nginx: [emerg] unknown
nginx逆プロキシwebsocket
nginx: [emerg] unknown まず、クライアントはプロトコルアップグレードの要求を開始し、nginxはブロック時にプロトコルアップグレード(upgrade)の要求であることを認識する必要があるので、アップグレード(Upgrade head)と接続ヘッダ(Connection head)を明示的に設定する必要があります.以下のようにします.
    location /sockjs-node/ {
    proxy_pass http://127.0.0.1:4200/sockjs-node/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
}

完了後、nginxはこれをWebSocket接続処理とする.
nginx: [emerg] unknown
次に、サーバがアップグレード要求に応答してnginxがエージェントとして処理する場合、以下の構成が必要となる.
http {
    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
    
    server {
        ...
    }
}

このとき、最初に私が修正したところが現れました.上記の内容と結びつけて、mapコードセグメントの役割は主にクライアントリクエストの$http_に基づいていると推測できます.upgradeの値を使用して$connection_を変更します.upgradeの値、すなわち変数$http_に基づいてupgradeの値は、新しい変数$connection_を作成します.upgrade.mapマッピングを行っていないのでconnection_を知りませんupgradeは何なのか、unknown "connection_upgrade" variableエラーが発生します.
まとめ
小さな変更でも、背後には膨大な情報が隠されている. ではなく に止まると、永遠に進歩しません.
私のレベルは有限で、各位が評論区で不足を指摘することを歓迎して、あなた达のフィードバックは私の進歩の動力です!参照ドキュメント:https://www.nginx.com/blog/we... https://www.cnblogs.com/chyin...