DUICUO

FreeBSD 10.2 上の Apache のリバースプロキシとして Nginx をインストールする方法

Nginxは、無料でオープンソースのHTTPおよびリバースプロキシサーバーであり、POP3/IMAPメールプロキシサーバーとしても使用できます。Nginxは、豊富な機能、シンプルなアーキテクチャ、そして低いメモリフットプリントを特徴とする高性能ウェブサーバーです。最初のバージョンは2002年にIgor Sysoevによってリリースされ、Netflix、GitHub、Cloudflare、WordPress.comなど、多くの大手テクノロジー企業で現在も使用されています。

このチュートリアルでは、「FreeBSD 10.2 システムに Apache のリバースプロキシとして Nginx ウェブサーバーをインストールして設定する」方法を説明します。Apache はポート 8080 で PHP を実行し、ユーザー/訪問者からのリクエストを受信するためにポート 80 で Nginx を実行するように設定します。ポート 80 でウェブページへのリクエストを受信すると、Nginx はリクエストを Apache ウェブサーバーとポート 8080 で実行されている PHP に転送します。

前提条件

◆FreeBSD 10.2

◆ルート権限

ステップ1: システムを更新する

SSH 認証を使用して FreeBSD サーバーにログインし、次のコマンドを使用してシステムを更新します。

  1. FreeBSDアップデート フェッチ 
  2. FreeBSDアップデートインストール

ステップ2: Apacheをインストールする

Apacheは最も広く使用されているオープンソースのウェブサーバーです。FreeBSDではApacheはデフォルトでインストールされませんが、`/usr/ports/www/apache24`以下のportsディレクトリから直接インストールするか、パッケージ経由でインストールするか、`pkg`コマンドを使用してFreeBSDソフトウェアリポジトリから直接インストールできます。このチュートリアルでは、`pkg`コマンドを使用してFreeBSDソフトウェアリポジトリからインストールします。

  1. pkg インストール apache24

ステップ3: PHPをインストールする

Apacheが正常にインストールされると、次にPHPがインストールされます。PHPはPHPファイルへのユーザーリクエストを処理します。PHPをインストールするには、以下のpkgコマンドを使用します。

  1. pkg インストール php56 mod_php56 php56-mysql php56-mysqli

ステップ4: ApacheとPHPを設定する

すべてインストールが完了したら、Apacheをポート8080で実行するように設定し、PHPをApacheで動作させます。Apacheの設定は「httpd.conf」設定ファイルを編集することで行えます。PHPの場合は、「/usr/local/etc/」ディレクトリからPHP設定ファイルphp.iniをコピーするだけで済みます。

「/usr/local/etc/」ディレクトリに移動し、php.ini-production ファイルを php.ini にコピーします。

  1. cd /usr/ローカル/etc/
  2. cp php.ini-production php.ini

次に、Apache ディレクトリ内の「httpd.conf」ファイルを編集して Apache を設定します。

  1. cd /usr/ローカル/etc/apache24
  2. ナノ -c httpd.conf

ポート設定は 52 行目にあります。

  1. 8080を聴く

サーバー名は 219 行目で構成されています。

  1. サーバー名 127.0.0.1:8080

277 行目に DirectoryIndex ファイルを追加します。Apache はこのファイルを使用してディレクトリの要求を処理します。

  1. ディレクトリインデックス インデックス.phpインデックス.html

287 行目で、スクリプト サポートを追加するように Apache を構成します。

  1. <FilesMatch "\.php$" >
  2. SetHandler アプリケーション/x-httpd-php
  3. </ファイルマッチ>
  4. <FilesMatch "\.phps$" >
  5. SetHandler アプリケーション/x-httpd-php-ソース
  6. </ファイルマッチ>

保存して終了します。

次に、sysrc コマンドを使用して、Apache をスタートアップ プロジェクトとして追加します。

  1. sysrc apache24_enable=yes

次に、次のコマンドを使用して Apache 構成をテストします。

  1. apachectl configtest

ここまですべて問題なければ、Apache を起動します。

  1. apache24 サービスを開始する

すべてが完了したら、「/usr/local/www/apache24/data」ディレクトリに phpinfo ファイルを作成し、PHP が Apache で正常に実行されていることを確認します。

  1. cd /usr/ローカル/www/apache24/data
  2. echo "<?php phpinfo(); ?>" > info.php

これで、FreeBSD サーバーの IP: 192.168.1.123:8080/info.php にアクセスできるようになりました。

ポート8080上のApacheとPHP

Apache と PHP はポート 8080 で実行されます。

ステップ5: Nginxをインストールする

Nginxは、メモリ使用量が少なく、高性能なWebサーバーとリバースプロキシサーバーを提供します。このステップでは、ApacheのリバースプロキシとしてNginxを使用するため、pkgコマンドを使ってインストールしましょう。

  1. pkg nginx をインストール

ステップ6: Nginxの設定

Nginxをインストールしたら、「nginx.conf」ファイルに新しい設定ファイルを作成し、元のnginx設定ファイルを置き換える必要があります。「/usr/local/etc/nginx/」ディレクトリに移動し、デフォルトのnginx.confファイルをバックアップします。

  1. cd /usr/ローカル/etc/nginx/
  2. mv nginx.conf nginx.conf.oroginal

これで、新しい nginx 設定ファイルを作成できます。

  1. ナノ -c nginx.conf

次に、次の構成を貼り付けます。

  1. ユーザーwww;
  2. ワーカープロセス 1;
  3. error_log /var/log/nginx/error.log;
  4. イベント {
  5. ワーカー接続 1024;
  6. }
  7. http {
  8. mime.types をインクルードします。
  9. default_type アプリケーション/オクテット ストリーム;
  10. log_format main '$remote_addr - $remote_user [$time_local] "$request" '  
  11. '$status $body_bytes_sent "$http_referer" '  
  12. '"$http_user_agent" "$http_x_forwarded_for"' ;
  13. アクセスログ /var/log/nginx/access.log;
  14. sendfileオン;
  15. キープアライブタイムアウト 65;
  16. # Nginx キャッシュ設定
  17. proxy_cache_path /var/nginx/cache レベル=1:2 キー_ゾーン=my-cache:8m 最大サイズ=1000m 非アクティブ=600m;
  18. proxy_temp_path /var/nginx/cache/tmp;
  19. proxy_cache_key "$scheme$host$request_uri" ;
  20. gzipオン;
  21. サーバー {
  22. #聞く 80;
  23. サーバー名 _;
  24. 場所 /nginx_status {
  25. stub_statusオン;
  26. access_logオフ;
  27. }
  28. # サーバーのエラーページを静的ページ/50x.htmlリダイレクトします
  29. #
  30. エラーページ 500 502 503 504 /50x.html;
  31. 場所 = /50x.html {
  32. ルート /usr/ローカル/www/nginx-dist;
  33. }
  34. # PHP スクリプトを127.0.0.1:8080listen している Apacheプロキシします
  35. #
  36. 場所 ~ \.php$ {
  37. プロキシパス http://127.0.0.1:8080;
  38. /usr/local/etc/nginx/proxy.confを include します
  39. }
  40. }
  41. /usr/ local /etc/nginx/vhost/* をインクルードします。
  42. }

保存して終了します。

次に、nginx ディレクトリに proxy.conf ファイルを作成し、リバース プロキシとして動作できるようにします。

  1. cd /usr/ローカル/etc/nginx/
  2. ナノ -c proxy.conf

次の設定を貼り付けます。

  1. proxy_bufferingオン;
  2. proxy_redirectオフ;
  3. proxy_set_header ホスト $host;
  4. proxy_set_header X-IP $remote_addr;
  5. proxy_set_header X-Forwarded- For $proxy_add_x_forwarded_for;
  6. クライアントの最大ボディサイズは10mです。
  7. クライアントボディバッファサイズ 128k;
  8. プロキシ接続タイムアウト 90;
  9. プロキシ送信タイムアウト 90;
  10. プロキシ_読み取りタイムアウト 90;
  11. プロキシバッファ 100 8k;
  12. X-Cache $upstream_cache_status に add_header を追加します。

保存して終了します。

まず、nginx のキャッシュ用に「/var/nginx/cache」という名前の新しいディレクトリを作成します。

  1. mkdir -p /var/nginx/cache

ステップ7: Nginx仮想ホストを構成する

この手順では、新しい仮想ホストドメイン「saitama.me」を作成し、そのドキュメントルートディレクトリを「/usr/local/www/saitama.me」にし、ログファイルを「/var/log/nginx」ディレクトリに配置する必要があります。

まず最初に、仮想ホストの設定ファイルを保存するための新しいディレクトリを作成します。「vhost」という名前の新しいディレクトリを作成します。作成は以下のとおりです。

  1. cd /usr/ローカル/etc/nginx/
  2. mkdir バーチャルホスト

vhostディレクトリを作成したら、このディレクトリに入り、新しい仮想ホストファイルを作成します。ここでは「saitama.conf」という名前を付けました。

  1. cd バーチャルホスト/
  2. ナノ -c saitama.conf

次の仮想ホスト構成を貼り付けます。

  1. サーバー {
  2. 交換する  FreeBSD IP
  3. 192.168.1.123:80 をリッスンします。
  4. # ドキュメントルート
  5. ルート /usr/ローカル/www/saitama.me;
  6. 索引 インデックス.phpインデックス.htmlインデックス.htm;
  7. # ドメイン
  8. サーバー名 www.saitama.me saitama.me;
  9. # エラーおよびアクセスログファイル
  10. error_log /var/log/nginx/saitama-error.log;
  11. access_log /var/log/nginx/saitama-access.log メイン;
  12. # リバースプロキシ設定
  13. 場所 ~ \.php$ {
  14. プロキシパス http://127.0.0.1:8080;
  15. /usr/local/etc/nginx/proxy.confを include します
  16. # キャッシュ設定
  17. proxy_cache マイキャッシュ;
  18. proxy_cache_valid 10秒;
  19. proxy_no_cache $cookie_PHPSESSID;
  20. proxy_cache_bypass $cookie_PHPSESSID;
  21. proxy_cache_key "$scheme$host$request_uri" ;
  22. }
  23. #ファイルタイプ html、jsonキャッシュを無効にする
  24. 場所 ~* .(?:manifest|appcache|html?|xml|json)$ {
  25. 有効期限 -1;
  26. }
  27. # ファイルを30日間キャッシュする
  28. 場所 ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
  29. proxy_cache_valid 200 120m;
  30. 30日で期限切れになります。
  31. proxy_cache マイキャッシュ;
  32. access_logオフ;
  33. }
  34. }

保存して終了します。

次に、nginx と仮想ホスト用の新しいログ ディレクトリ「/var/log/」を作成します。

  1. mkdir -p /var/log/nginx/

すべてがうまくいったら、ファイルシステムのルートディレクトリに saitama.me という名前のディレクトリを作成し、ドキュメントルートとして使用します。

  1. cd /usr/ローカル/www/
  2. saitama.me の mkdir

ステップ8: テスト

このステップでは、nginx と仮想ホストの構成をテストするだけです。

次のコマンドを使用して nginx 構成をテストします。

  1. nginx -t

すべてが正しく動作している場合は、sysrc コマンドを使用して nginx を起動項目として追加し、nginx を起動して apache を再起動します。

  1. sysrc nginx_enable=yes
  2. nginxサービスを開始する
  3. サービスapache24を再起動

すべてが完了したら、saitama.me ディレクトリに新しい phpinfo ファイルを追加して、PHP が正しく実行されていることを確認します。

  1. cd /usr/ローカル/www/saitama.me
  2. echo "<?php phpinfo(); ?>" > info.php

次に、このドメインにアクセスします:www.saitama.me/info.php。

仮想ホスト設定 saitamame

Nginx は Apache のリバース プロキシとして実行されており、PHP も動作しています。

別の結果は次のとおりです。

キャッシュなしで .html ファイルをテストします。

  1. curl -I www.saitama.me

キャッシュなしのHTML

テストには 30 日間キャッシュされた .css ファイルが含まれていました。

  1. curl -I www.saitama.me/test.css

CSSファイルの30日間のキャッシュ

.php ファイル内のキャッシュをテストします。

  1. curl -I www.saitama.me/info.php

PHPファイルがキャッシュされました

すべて完了しました。

要約

Nginxは強力なHTTPおよびリバースプロキシサーバーであり、豊富な機能、高いパフォーマンス、そして低いメモリ/RAM使用量を誇ります。Nginxはキャッシュにも利用されており、ネットワーク上の静的ファイルをキャッシュしてWebページの高速化を図ったり、ユーザーがリクエストしたPHPファイルをキャッシュしたりできます。Nginxは設定と使用が簡単で、HTTPサーバーとして、またはApacheのリバースプロキシとして使用できます。