GNU/Linux >> Linux の 問題 >  >> Rocky Linux

RockyLinux8でNginxWebサーバーを使用してVarnishSSLターミネーションを設定する方法

Varnishキャッシュソフトウェアは、デフォルトではSSL/TLSをサポートしていません。 VarnishでSSL/TLSサポートを有効にするには、追加のソフトウェアが必要です。

SSL終了 VarnishでSSL/TLSを有効にする方法です。 Hitch、Nginx、またはApacheを使用できます VarnishHTTPアクセラレータのSSLターミネーションを有効にします。

SSLターミネーションソフトウェアはHTTPSで実行されます ポート'443 'およびクライアントからのすべてのHTTPS要求を処理します。その後、すべてのリクエストはワニスキャッシュソフトウェアに転送され、次にオリジンバックエンドサーバーに転送されます。

前提条件

この記事では、NginxWebサーバーを使用してVarnishSSLターミネーションを設定する方法を学習します。

始める前に、次の要件が整っていることを確認してください。

  • VarnishがインストールされたLinuxサーバー。
  • root権限
  • ドメイン名

この例では、VarnishがインストールされたRockyLinuxサーバーを使用しています。そして、ドメイン名' example.ioを使用します '。

それでは始めましょう。

NginxWebサーバーのインストール

NginxをVarnishバックエンドとして使用している場合は、この最初の手順をスキップしてください。

この最初のステップでは、LinuxシステムにNginxをインストールします。

1. Debian / Ubuntuベースのディストリビューションの場合、以下のaptコマンドを実行してNginxWebサーバーをインストールします。

sudo apt install nginx -y

2. CentOS / RockyLinux / AlmaLinuxオペレーティングシステムの場合、以下のDNFコマンドを実行してNginxWebサーバーをインストールします。

sudo dnf install nginx -y

3. Nginxのインストールが完了したら、次のコマンドを使用してNginxWebサーバーを起動して有効にします。

sudo systemctl enable --now nginx

エラーが発生した場合は、そのままにしておきます。次のステップでNginxを構成します。

Certbotを使用してSSLを生成

このステップでは、cerbotツールをインストールし、Letsencryptからドメイン' example.ioのSSL証明書を生成します。 '。

1.まず、HTTPポートとHTTPSポートをシステムファイアウォールに追加します。

Debian / Ubuntuシステムの場合、以下のufwコマンドを実行して、HTTPおよびHTTPSポートを開きます。

sudo ufw allow http
sudo ufw allow https
sudo ufw reload

CentOS / RockyLinux / AlmaLinuxシステムの場合、以下のfirewall-cmdコマンドを実行します。

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload

2.次に、次のコマンドを使用してcertbotツールをインストールします。

以下のaptコマンドを使用して、Debian/Ubuntuシステムにcertbotツールをインストールします。

sudo apt install certbot -y

以下のDNFコマンドを使用して、CentOS / RockyLinux/AlmaLinuxシステムにcertbotツールをインストールします。

sudo dnf install certbot -y

3. SSL Letsencryptを生成する前に、デフォルトのHTTPポートで実行されているVarnishサービスを停止します。

sudo systemctl stop varnish
sudo systemctl stop nginx

4.次に、以下のcertbotコマンドを実行して、SSLLetsencryptを生成します。また、ドメイン名とメールアドレスを必ず変更してください。

sudo certbot certonly --agree-tos --email [email protected] --standalone --preferred-challenges http -d example.io

certbotプロセスが完了すると、証明書はディレクトリ' /etc/letsencrypt/live/DOMAIN.COM/で利用できるようになります。 '。

証明書'fullchain.pem 'はSSL公開鍵であり、' privkey.pem 'はSSL秘密鍵です。

デフォルトのNginxポートを設定

VarnishHTTPアクセラレータのバックエンドとしてNginxWebサーバーを使用している場合は、この手順をスキップしてください。

別のバックエンドWebサーバーを使用している場合は、Nginxのデフォルトポートを構成する必要があります。

1.nanoエディターを使用してデフォルトのnginx構成を編集します。

sudo nano /etc/nginx/nginx.conf

デフォルトの'サーバー{...} 'セクションで、オプションを変更します' listen 'ポート'8081 '以下のように。

....

    server {
        listen       8081 default_server;
        listen       [::]:8081 default_server;

        ...trim...
    }

....

構成を保存して終了します。

2.ここで、Nginxサービスを再起動して、新しい構成を適用します。

sudo systemctl restart nginx

デフォルトのNginxサービスがポート'8081で実行されています '。

NginxWebサーバーを使用したSSLターミネーションのセットアップ

NginxでSSLターミネーションを設定するには、HTTPSポート「443」で実行される新しい仮想ホスト/サーバーブロック構成を作成する必要があります。

この仮想ホストは、クライアントからのすべてのHTTPSリクエストを処理し、すべてのリクエストをVarnishHTTPアクセラレータに転送します。

1.次のコマンドを使用して、新しいNginxサーバーブロック構成を作成します。

Debian / Ubuntuベースのシステムを使用している場合は、新しい構成を作成します' /etc/nginx/sites-available/example.io '。

sudo nano /etc/nginx/sites-available/example.io

CentOS / RockyLinux / AlmaLinuxシステムの場合、新しい構成を作成します' /etc/nginx/conf.d/example.conf'

sudo nano /etc/nginx/conf.d/example.conf

次の構成をコピーして貼り付けます。また、SSL証明書のドメイン名とパスを必ず変更してください。

server {

    listen 443 ssl http2;
    server_name example.io;
    ssl_certificate           /etc/letsencrypt/live/exmaple.io/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/example.io/privkey.pem;

    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/example.io_access.log;
    error_log             /var/log/nginx/example.io_error.log;

        location / {
            proxy_pass http://127.0.0.1:80;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-Port 443;
            proxy_set_header Host $host;
        }

  }

構成を保存して終了します。

2.次に、Debian / Ubuntuシステムの場合、次のコマンドを使用してサーバーブロック構成をアクティブ化します。

sudo ln -s /etc/nginx/sites-available/example.io /etc/nginx/sites-enabled/

3.次に、次のコマンドを実行してNginx構成を確認してから、Nginxサービスを再起動して新しい構成を適用します。

sudo nginx -t
sudo systemctl restart nginx

4.次に、Nginxサービスと HTTPSを確認します ポート'443 '次のコマンドを使用します。

以下のsystemctlコマンドを使用してNginxサービスのステータスを確認します。

sudo systemctl status nginx

Nginxサービスがアクティブで実行されていることを確認してください。

HTTPSポートを確認します'443 ' ssを使用してシステム上で 以下のコマンド。

ss -antpl | grep 443

HTTPSポートを確認してください'443 '状態について'LISTEN '。

LISTEN 0      128          0.0.0.0:443        0.0.0.0:*    users:(("nginx",pid=4787,fd=8),("nginx",pid=4786,fd=8),("nginx",pid=4785,fd=8))

これで、NginxWebサーバーを使用したSSLターミネーションの基本構成が完了しました。

ワニスを使用したHTTPからHTTPSへの自動

このステップでは、HTTPをHTTPSプロトコルに自動的にリダイレクトするようにVarnishを設定します。これは、構成' default.vcl'に新しいワニスルールを作成することで実現できます。 。

1.ワニス構成を編集します'/etc/varnish/default.vcl' nanoエディターを使用します。

nano /etc/varnish/default.vcl

次の構成をコピーして、オプション' sub vcl_recv {...}内に貼り付けます。 '。また、ドメイン名は必ずドメインに合わせて変更してください。

sub vcl_recv {

    ...trim...

    if (client.ip != "127.0.0.1" && req.http.host ~ "example.io") {
       set req.http.x-redir = "https://example.io" + req.url;
       return(synth(850, ""));
    }

    ...trim...
{

次に、次の構成を行の最後に追加します。これにより、HTTP「301」へのリダイレクト方法が決まります。

sub vcl_synth {
    if (resp.status == 850) {
       set resp.http.Location = req.http.x-redir;
       set resp.status = 301;
       return (deliver);
    }
}

ニスの構成を保存して終了します。

2.次に、次のコマンドを使用して、Varnishサービスを再起動し、新しい構成を適用します。

sudo systemctl restart varnish

そして、Varnishルールを使用してHTTPおよびHTTPSの自動リダイレクトを完了しました。

ワニスのSSL終了を確認する

Varnish SSLターミネーションをテストするには、Webブラウザまたはcurlコマンドを使用できます。

1. Webブラウザーを開き、アドレスバーにドメイン名を入力します。この例では、FirefoxWebブラウザを使用しています。

http://example.io

HTTPSプロトコルに自動的にリダイレクトされます。

Webページを右クリックして、メニューの[検査]をクリックします。 '。

タブに移動します'ネットワーク 'をクリックし、'リロードをクリックします 'ボタン。

ルートURLリクエストをクリックすると、以下のような出力が表示されます。

http://example.ioへのリクエストは、HTTPSプロトコル https://example.ioに自動的にリダイレクトされます。 ステータスコード'301 '。

Varnishサーバーはすべてのクライアント要求を処理します。

2. curlを使用したニスSSLターミネーションを確認するには、次のコマンドを使用します。

curl -I http://example.io

以下のような詳細なHTTPヘッダーが表示されます。

リクエストは、HTTPステータスコード「 301」を使用してHTTPSプロトコル「https://example.io」にリダイレクトされます。 '。ワニスサーバーは、クライアントからのすべてのリクエストを処理します。

結論

おめでとうございます! NginxWebサーバーを使用したVarnishSSLTerminationの構成を学習しました。

また、無料のSSL Letsencryptを生成するための基本的なcertbotコマンドと、HTTPからHTTPSに自動的にリダイレクトするための基本的なニスルールについても学びました。


Rocky Linux
  1. RockyLinux8にNginx用のVarnish7をインストールする方法

  2. LinuxにNginxWebサーバーをインストールする方法

  3. VSFTPDを使用してRockyLinux8にFTPサーバーをインストールする方法

  1. Ubuntu18.04にNginxWebサーバーをインストールする方法

  2. LinuxでKeepAlivedを使用して高可用性NGINXをセットアップする方法

  3. RockyLinux8にNGINX用のLet'sEncryptSSLをインストールする方法

  1. Nginxを使用してNEOSCMSをインストールし、RockyLinux8でSSLを暗号化する方法

  2. RockyLinux8にNginxを使用してApacheTomcat10をインストールする方法

  3. RockyLinuxにNginxでJoomlaをインストールする方法