ウェブサーバーの構成【Plesk11】

STEP 1既定のウェブサーバ(nginxとapache)

Plesk11では既定のフロントエンドのリバースプロキシーサーバとしてnginx(”NGiNX / エンジンエックス”)が稼働しており、バックエンドではApacheウェブサーバが起動しています。
nginxは著名なウェブサイトでも採用されているウェブサーバプログラムでPlesk11環境では、リバースプロキシーサーバとして機能しており、同じサーバ内ではApacheが起動しています。ウェブサイトのサーバネームやドキュメントルートなどはApache側の設定値にて行っているため、nginxの存在を知らずにPlesk11を操作されている、という場合もあります。
nginxとApacheの併用によりCPU、メモリの使用量を低減することができ、Apacheウェブサーバのみの場合に比べ、ウェブサイトアクセス時間とアプリケーションの応答時間のパフォーマンスが向上します。

nginxとapache

nginxとapache

STEP 2Apache設定ファイルの構成

Plesk11でもウェブ設定の根幹を担っているのはApacheの設定です。Apacheの設定はPlesk8等と比較すると関連ファイル数が大変多く混乱されることもあるかもしれません。
以下ウェブサーバApacheの設定ファイル および nginxの設定ファイル図を以下に掲載します。(参考サイト:Web Server Configuration Files: Plesk 11.0(英語) | ※ Plesk11.5Plesk12(当社サポート対象外バージョン) ではファイルパスが異なります)
以下の図に掲載されているファイルについては、システムでデフォルトで生成されるもの、およびPlesk固有のパス、もしくはPleskがバージョン番号を振ってPlesk内のテンプレートから作成するファイルであり、いずれも直接編集は行いません。
もしバーチャルホスト毎に設定を加える場合は、「/var/www/vhosts/[ドメイン名]/vhost.conf および vhost_ssl.conf」というファイルを別途作成して特定のコマンドで読み込ませることが必要です。vhost.conf/vhost_ssl.confの操作については別ガイド(ウェブサーバへの手動設定追加【Plesk11】)にて掲載しています。

apache設定ファイル構成(上記リンクより参照 Plesk11.0)

/etc/httpd/conf/httpd.conf
┃ 
┗●/etc/httpd/conf.d/zz010_psa_httpd.conf
   ┃
   ┣●/usr/local/psa/admin/conf/generated/<version>_server.include
   ┃  ┃
   ┃  ┣●/usr/local/psa/admin/conf/ip_vhosts_bootstrap.conf
   ┃  ┃ ┣●/var/www/vhosts/<ウェブスペースドメイン名1>/conf/<version>_httpd_ip_default.include
   ┃  ┃ :
   ┃  ┃
   ┃  ┗●/usr/local/psa/admin/conf/vhosts_bootstrap.conf
   ┃    ┣●/var/www/vhosts/<ウェブスペースドメイン名1>/conf/<version>_httpd.include 
   ┃    ┣●/var/www/vhosts/<追加ドメイン名1>/conf/<version>_httpd.include 
   ┃    ┣●/var/www/vhosts/<追加ドメイン名2>/conf/<version>_httpd.include 
   ┃    : 
   ┃    
   ┣●/usr/local/psa/admin/conf/generated/<version>_horde.include
   ┃  ┗●/usr/local/psa/admin/conf/webmail_horde_bootstrap.conf
   ┃    ┣●/usr/local/psa/admin/conf/generated/<version>_<ウェブスペースドメイン名1>_webmail.include
   ┃    :
   ┗●/usr/local/psa/admin/conf/generated/<version>_atmail.include
      ┗●/usr/local/psa/admin/conf/webmail_atmail_bootstrap.conf
        ┣●/usr/local/psa/admin/conf/generated/<version>_<ウェブスペースドメイン名1>_webmail.include
        :

参考:nginx側の設定ファイル構成

/etc/nginx/nginx.conf
┃ 
┗●/etc/nginx/conf.d/zz010_psa_nginx.conf
     ┃
     ┣●/usr/local/psa/admin/conf/generated/<version>_nginx.conf
     ┃ 
     ┗●/usr/local/psa/admin/conf/nginx_vhosts_bootstrap.conf

               ┃
               ┣●/var/www/vhosts/<ドメイン名1>/conf/<version>_nginx.conf
               ┣●/var/www/vhosts/<ドメイン名2>/conf/<version>_nginx.conf
               :

*.htaccessによるアクセス制限での注意点

Plesk11の既定の状態(初期ウェブスペース設定完了後)は、Nginxが起動し、Apacheのデフォルト設定では「nginxに対しての応答をすべて通過させる」という設定になっています。特に”.php””.pl”という動的なアクションを要求されるファイル名については アクセスを許可するという設定が追加で書かれています。(”Files”ディレクティブでファイル名を指定し、CGIの実行許可をする際に、allow from allという指定も書かれています)

通常、.htaccessファイルはサーバ設定ファイルに対し上書きをおこなうのですが、「Allow/Deny」に関する指定を.htaccessで行う場合は注意が必要です。
たとえば Nginx + Apache環境下で、 特定ディレクトリ以下のすべてのファイル対して特定アクセス元(例えば123.45.67.89)以外のアクセスを禁止をしたい場合に .htaccessを作成する場合は以下のように記載してください。

SetEnvIf X-Forwarded-For ^123.45.67.89$ AC


Order deny,allow
Deny from all
Allow from env=AC

前提条件として nginx + Apacheの構成の際は、Apacheサーバ側の設定で”Files”でファイル名を指定されてしまっているため、ディレクトリ全体に対してで設定しようとしても、それよりもピンポイントで指定されているファイル設定に対しては、上書きされません。ディレクトリ以下に .php ファイルや .plファイルがあった場合、思ったようなアクセス制限ができない、というようなことが起こりえます。 そのため、「すべてのファイルに対して有効になるようにファイル名レベルで指定する」ように記載しています。

※なお上記は通常Apacheのみの構成では以下のように書けばよいところです。 (nginxを停止する可能性もある場合は、上記の記述と下記の両方の記述を加えていただくということも可)

Deny from all
Allow from 123.45.67.89

nginx とApacheについてはテックブログにも記事を掲載しています。
Plesk11 nginx環境でのIPアクセス制限(Order, Allow, Deny)

*80番、443番ポート利用サービスの確認方法

実際にどのプログラムが80番、443番ポートを起動しているのかを、「lsof -i:(ポート番号指定)」にてコマンドラインで確認する方法があります。以下は80番、443番ポートはnginx、7080番、7081番ポートはapacheが起動している場合の例です。(サーバ出荷時はapacheのみが起動していますが、Plesk初期設定が終わった後はnginxが80番、443番ポートを取り扱うように設定が調整されています)

# /usr/sbin/lsof -i:80,443
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 23813 root 6u IPv4 617241356 0t0 TCP nonppp11.flxsrv.biz:http (LISTEN)
nginx 23813 root 12u IPv4 617273706 0t0 TCP nonppp11.flxsrv.biz:https (LISTEN)
nginx 25936 nginx 6u IPv4 617241356 0t0 TCP nonppp11.flxsrv.biz:http (LISTEN)
nginx 25936 nginx 12u IPv4 617273706 0t0 TCP nonppp11.flxsrv.biz:https (LISTEN)
# /usr/sbin/lsof -i:7080,7081 
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 26066 root 4u IPv6 617274344 0t0 TCP *:7080 (LISTEN)
httpd 26066 root 6u IPv6 617274349 0t0 TCP *:7081 (LISTEN)
httpd 26071 apache 4u IPv6 617274344 0t0 TCP *:7080 (LISTEN)
httpd 26071 apache 6u IPv6 617274349 0t0 TCP *:7081 (LISTEN)
httpd 26075 apache 4u IPv6 617274344 0t0 TCP *:7080 (LISTEN)
httpd 26075 apache 6u IPv6 617274349 0t0 TCP *:7081 (LISTEN)
httpd 26076 apache 4u IPv6 617274344 0t0 TCP *:7080 (LISTEN)
httpd 26076 apache 6u IPv6 617274349 0t0 TCP *:7081 (LISTEN)
httpd 26077 apache 4u IPv6 617274344 0t0 TCP *:7080 (LISTEN)
httpd 26077 apache 6u IPv6 617274349 0t0 TCP *:7081 (LISTEN)
httpd 26078 apache 4u IPv6 617274344 0t0 TCP *:7080 (LISTEN)
httpd 26078 apache 6u IPv6 617274349 0t0 TCP *:7081 (LISTEN)
httpd 26079 apache 4u IPv6 617274344 0t0 TCP *:7080 (LISTEN)
httpd 26079 apache 6u IPv6 617274349 0t0 TCP *:7081 (LISTEN)

*nginxの起動、停止

nginxを停止したい場合はPlesk>サーバメニュー>サービス管理、から操作を行ってください。
以下の方法ですと

  • 【ユーザ操作】Plesk管理画面もしくはnginxmngコマンドにてnginxを停止
  • 【サーバ内部】Apacheの設定ファイルを書き換え、フロントエンドの80,443番ポートにて運営するよう変更
    • nginxの設定ファイルを書き換え、(/etc/init.d/nginx start を実行しても)nginxが起動しないように変更
    • nginxを停止し、Apacheをフロントエンドサーバとして再起動

という形で、Apacheへの切り替えがおこなわれます。

サーバ>サーバ管理>サービス管理

サーバ>サーバ管理>サービス管理


arrow
リバースプロキシサーバ(nginx)稼働中

リバースプロキシサーバ(nginx)稼働中

サービスの右側のボタンは以下の3種類です。起動中は再起動、停止ボタン、停止中は起動ボタンが表示されます。

再起動ボタン

再起動ボタン

停止ボタン

停止ボタン

起動ボタン

起動ボタン



リバースプロキシサーバ(nginx)の行の右、赤い四角の停止ボタンをクリックすると停止します。
arrow
リバースプロキシサーバ(nginx)停止中

リバースプロキシサーバ(nginx)停止中

コマンドラインで対応する時は以下の方法になります。

無効にする場合
# /usr/local/psa/admin/bin/nginxmng --disable

有効にする場合
# /usr/local/psa/admin/bin/nginxmng --enable