Windows で Nginx を使用して https サーバーとリバース プロキシを構成する際の問題

Windows で Nginx を使用して https サーバーとリバース プロキシを構成する際の問題

リクエストロジック

フロントエンド --> https経由でnginxをリクエスト
nginx --> http経由でバックエンドサービスをリクエストする

OpenSSLをインストールする

ダウンロード

ここに画像の説明を挿入

次に、環境変数を設定します。システム環境変数に環境変数を追加します。

変数名: OPENSSL_HOME

変数値: F:\OpenSSL-Win64\bin;

(変数値はOPENSSLのインストール場所の下のbinディレクトリです)

証明書を生成する

コマンドラインを使用してディレクトリをランダムに開き、次のコマンドを使用して証明書を生成します。

# 秘密鍵を作成# ファイル名は test と自由に付けることができます。このコマンドは rsa パスワードを 2 回設定するように要求します。パスワードは後で必要になるので覚えておいてください。コマンドを実行すると、現在のディレクトリに test.key ファイルが生成されます openssl genrsa -des3 -out test.key 1024     

# csr 証明書を作成します。ここで使用する test.key は、前のコマンドで生成されたものです。このコマンドを実行した後、一連の情報を入力する必要があります。入力する最も重要な情報は Common Name です。ここで入力するドメイン名は、https を使用してアクセスするドメイン名です。たとえば、localhost と入力しました。残りの内容はお好みに応じて入力してください。上記の手順を完了すると、sslフォルダにtest.csrとtest.keyの2つのファイルが表示されます。
openssl req -new -key test.key -out test.csr

# パスワードを削除します # SSL サポート付きの Nginx をロードし、上記の秘密キーを使用する場合は、必要なパスワードを削除します。そうしないと、nginx を起動するときにパスワードを入力する必要があります。
# test.key をコピーして、test.copy.key に名前を変更します
# コマンドラインで以下のコマンドを実行してパスワードを削除します (このとき、上記の秘密鍵の作成時に入力したパスワードを入力する必要があります)。
openssl rsa -in テスト.コピー.キー -out テスト.キー

# CRT 証明書を生成します。証明書の生成が完了しました。 ssl フォルダーに合計 4 つのファイルが生成されていることがわかりました。次に、https サーバーを構成するときに、test.crt と test.key の 2 つのファイルを使用する必要があります。
openssl x509 -req -days 365 -in test.csr -signkey test.key -out test.crt 

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

nginxをダウンロードしてインストールし、nginxの設定を変更します

生成されたtest.keytest.crt $NGINX_ROOT/confディレクトリに移動します。

#ユーザーnobody;
ワーカープロセス 1;

#error_log ログ/error.log;
#error_log ログ/error.log 通知;
#error_log ログ/error.log 情報;

#pid ログ/nginx.pid;


イベント {
    ワーカー接続 1024;
}


http {
    mime.types を含めます。
    デフォルトタイプ アプリケーション/オクテットストリーム;

    #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    # '$status $body_bytes_sent "$http_referer" '
    # '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log ログ/access.log メイン;

    ファイル送信オン;
    #tcp_nopush オン;

    #キープアライブタイムアウト 0;
    キープアライブタイムアウト65;

    #gzip オン;

    サーバー{
        聞く 80;
        server_name ローカルホスト;

        #文字セット koi8-r;

        #access_log ログ/host.access.log メイン;

        位置 / {
            ルート D:/local-site;
            インデックス index.html index.htm;
        }

        #エラーページ 404 /404.html;

        # サーバーのエラーページを静的ページ /50x.html にリダイレクトします
        #
        エラーページ 500 502 503 504 /50x.html;
        場所 = /50x.html {
            ルートhtml;
        }

        # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします
        #
        #場所 ~ \.php$ {
        # プロキシパス http://127.0.0.1;
        #}

        # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します
        #
        #場所 ~ \.php$ {
        #ルートhtml;
        #fastcgi_pass 127.0.0.1:9000;
        # fastcgi_index インデックス.php;
        # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
        #fastcgi_params を含めます。
        #}

        # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する
        # nginxのものと一致します
        #
        #場所 ~ /\.ht {
        # すべて拒否;
        #}
    }

    サーバー{
       聞く 8086;
       ローカルホスト:8086 をリッスンします。
       server_name ローカルホスト;
       gzip オン;
       gzip_バッファ 4 16k;
       gzip_comp_レベル6;
       gzip_vary オン;
       gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/xml+rss text/javascript;

       位置 / {
           ルート D:/local-site/good-test;
           インデックス index.html index.htm;
       }

       場所 ^~/api/ { 
           ^~/api/(.*)$ /$1 を書き換えて、break;
           proxy_pass http://localhost:8080/; #プロキシIP:ポート}
    }

    # ここでは、HTTPS サーバー構成、リバース プロキシ、およびクロスドメイン サポートが使用されます。nginx とバックエンド サービスに注意してください。クロスドメインは nginx でのみ設定する必要があります。バックエンド サービスに対してクロスドメインを有効にしないでください。両側でクロスドメインを有効にすると、問題が発生します。#
    サーバー{
       443 ssl を聴く;
       server_name ローカルホスト;

       ssl_certificate テスト.crt;
       ssl_certificate_key テストキー;

       ssl_session_cache 共有:SSL:1m;
       ssl_session_timeout 5分;

       ssl_ciphers HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers をオン;

    # 位置 / {
    #ルートhtml;
    # インデックス index.html index.htm;
    # }

       位置 / { 
        # 書き換え ^~/api/(.*)$ /$1 break;
            # add_header アクセス制御許可オリジン *;
            # クライアント要求メソッドを許可する add_header 'Access-Control-Allow-Methods' 'GET、POST、OPTIONS、DELETE、PUT';
            # クライアントによって送信されたリクエスト ヘッダーを許可する add_header 'Access-Control-Allow-Headers' 'Origin、x-requested-with、Content-Type、Accept、Authorization';
            # クライアントがクッキーを送信できるようにする
            add_header 'Access-Control-Allow-Credentials' 'true';
            # クライアントが応答ヘッダーにアクセスできるようにする add_header 'Access-Control-Expose-Headers' 'Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma';

            プロキシパス http://10.114.119.61:8080;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;

            proxy_set_header ホスト $host;
            proxy_set_header X-Real-IP $remote_addr;
       }
    }

    サーバー{
       8443 ssl を聴く;
       server_name ローカルホスト;

       ssl_certificate テスト.crt;
       ssl_certificate_key テストキー;

       ssl_session_cache 共有:SSL:1m;
       ssl_session_timeout 5分;

       ssl_ciphers HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers をオン;

    # 位置 / {
    #ルートhtml;
    # インデックス index.html index.htm;
    # }

       位置 / { 
        # 書き換え ^~/api/(.*)$ /$1 break;
            # add_header アクセス制御許可オリジン $http_origin;
            # クライアント要求メソッドを許可する add_header 'Access-Control-Allow-Methods' 'GET、POST、OPTIONS、DELETE、PUT';
            # クライアントによって送信されたリクエスト ヘッダーを許可する add_header 'Access-Control-Allow-Headers' 'Origin、x-requested-with、Content-Type、Accept、Authorization';
            # クライアントがクッキーを送信できるようにする
            add_header 'Access-Control-Allow-Credentials' 'true';
            # クライアントが応答ヘッダーにアクセスできるようにする add_header 'Access-Control-Expose-Headers' 'Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma';

            # これは、プロキシ proxy_pass http://10.114.119.61:7001 を必要とするサービスを構成するためのものです。
            # プロキシパス https://172.16.46.38:8443;
            # プロキシパス http://10.114.119.61:8866;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;

            proxy_set_header ホスト $host;
            proxy_set_header X-Real-IP $remote_addr;
       }
    }

}

重啟nginx

ローカルドメイン名の設定

C:\Windows\System32\drivers\etc\hostsファイルを開く

設定を追加します:

10.114.119.61 パンテスト
10.114.119.61 パン.uat.com

Windows で Nginx を使用して https サーバーとリバース プロキシを構成する方法については、これで終わりです。Nginx による https サーバーの構成に関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 複数のドメイン名に対する Nginx リバース プロキシを使用した HTTP および HTTPS サービスの実装
  • nginx httpsリバースプロキシtomcatを実装する2つの方法
  • Nginx サーバーの https 設定方法の例
  • nginx サーバーの http を https にリダイレクトする正しい方法の詳細な説明
  • Nginx による https サーバー構築チュートリアル
  • Alibaba Cloud LINUXサーバーでのHTTPS(NGINX)設定の詳細な説明
  • Nginx で HTTPS サーバーを構築し、HTTPS アクセスを強制する方法

<<:  LinuxサーバーにVueプロジェクトをデプロイする

>>:  HTML 挿入画像の例 (HTML 追加画像)

推薦する

sqlite を mysql スクリプトに移行する方法

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 パーレル # # https:/...

DockerでJenkinsをインストールし、初期プラグインのインストール失敗の問題を解決する

Jenkins をインストールした後、プラグインの初期ダウンロードが常に失敗し、インストールが失敗し...

我々は自らの力でIE6を絶滅に追い込んでいる

実際、IE6 が本当にいつ消滅するのか私たちは毎日疑問に思っていますが、2001 年のリリース以来、...

CSSセレクタを使用してラベルスタイルを設定するサンプルコード

CSS セレクターHTML タグにスタイルを設定すると、タグの属性を設定できます。 <div ...

CentOS の Nginx 公式 Yum ソースの設定を詳しく解説

私はプロジェクトの展開にAlibaba Cloudから購入したCentOSを使用しています。最近、プ...

win10でのmysql5.7.21解凍バージョンのインストールチュートリアル

次のように、Win10でMysqlの解凍バージョンをインストールします。環境: win10 64ビッ...

docker-compose で Jenkins をインストールする際の実践的なメモ

ディレクトリを作成する cd /usr/local/docker/ jenkins-docker を...

ウェブページにコンテンツが多すぎる場合に、下から上へ素早く戻る方法

Web フロントエンド開発では、ページに多くの記事を表示することが避けられません。記事の最後にあるク...

Linux で MySQL スケジュールタスクを実装する方法

前提: ストアド プロシージャは、毎日午後 10 時から午前 5 時まで 10 分ごとに実行されます...

JS関数の呼び出し、適用、バインドの超詳細な方法

目次JS 関数呼び出し、適用、バインドメソッド1. call() メソッド1. call() メソッ...

WeChat アプレットカスタムタブバーステップ記録

目次1. はじめに2. タブバーのスタイルをカスタマイズする3. カスタムタブバーと関連設定を導入す...

ウェブページの幅を携帯電話の画面(ビューポート)の幅に自動的に適応させる実装コード

一般的な書き方は次のとおりです。 XML/HTML コードコンテンツをクリップボードにコピー<...

Vue を使用して 2 つのデータ セットの違いを比較する視覚化コンポーネントの詳細な説明

目次必要:要点:これまでの要点に従って、コンポーネントのプロパティを確立できます。コンポーネントの基...

Linux でスペースを含むファイルを削除する (ディレクトリではない)

日常業務では、スペースのないファイルに遭遇することがよくあります。これにより、削除操作がはるかに簡単...

Chrome 4.0 は GreaseMonkey スクリプトをサポートします

GreaseMokey (中国語では Grease Monkey Script と呼んでいます) は...