Web Server · 1 min read · Dec 27, 2025
Nginx Catch-All Host As Front End To Apache For ISPConfig 3 On Debian Lenny
Nginx Catch-All Host As Front End To Apache For ISPConfig 3 On Debian Lenny
By Nedim Hadzimahmutovic < [email protected] >
Version: v1.1
Last Change: May 19, 2010
Introduction
Apacheは私にとって常に選ばれるウェブサーバーでした。リソースが限られた環境、特にVPSのような環境では、リソース使用に関して本当に強力です。私は軽量で高性能なウェブサーバーであるNginxを使い始めました。私の関心のある分野は、Nginxをリバースプロキシとして実行し、Apache/ISPConfig 3環境で機能させることでした。
The Problem
私はOpenVZ、apache2-mpm-itk、mod_phpのユーザーです。Apache mpm-itkはFastCGIをサポートしていません。この問題は、64ビットOSを使用すると劇的に増加します。なぜなら、Apacheははるかに多くのメモリを使用するからです(32ビットシステムは4バイトポインタを持ち、64ビットシステムは8バイトポインタを持ちます)。私はKMEMSIZE制限エラーを受け始め、Apacheがその理由でした。Apacheは私のVPSを使えなくしたので、代替手段を探さなければなりませんでした。
The Solution
Nginxが答えでしたが、私はApacheのみをサポートするISPConfigユーザーであり、これを回避する方法を見つけても、各仮想ホストを手動で管理することはありませんでした。解決策は、Nginxのキャッチオールホストをフロントエンドとして設定し、バックエンドで異なるポートで実行されるApacheにプロキシすることでした。この方法で、Nginxは静的ファイルを提供し、PHPはApacheに任せることになります。また、希望すれば、Nginxに全ドメインを任せることもできます。その場合は、そのドメインの仮想ホストをデフォルトのvhostの前に置くだけです。さらに一歩進めて、64ビットOSの上に32ビットのchroot環境を実行し、32ビットのApacheをインストールすることもできますが、これはこのチュートリアルではカバーしません。
Configure Apache
Apacheをポート82で実行するように設定します。/etc/apache2/ports.confおよびすべての仮想ホストで設定します。簡単にするためにsedコマンドを使用します:
# sed -ie 's/YOUR-IP:80/YOUR-IP:82/g' /etc/apache2/sites-available/*.vhost 仮想ホストはIPベースであると仮定します - あなたのvhostはIP:80の代わりに*:80を持つことがあります。
sedコマンドは、.vhostファイルのバックアップファイルを作成します。これらのファイルには.vhoste拡張子が付いています。バックアップvhostファイルを移動できます:
mkdir /root/apache2_vhost_backup/mv /etc/apache2/sites-available/*.vhoste /root/apache2_vhost_backup/Apacheを再起動し、netstatを使用してポート82で実行されているか確認します:
tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 7630/apache2 次に、ISPConfigのApacheテンプレートを変更する必要があります。これらをconf-customディレクトリにコピーします:
# cd /usr/local/ispconfig/server/ # cp conf/apache_ispconfig.conf.master conf-custom/ # cp conf/vhost.conf.master conf-custom/ 2つのファイルを開いて、:80を:82に変更します。念のため、grepコマンドを実行して出力が一致するか確認します:
# grep :82 -i /usr/local/ispconfig/server/conf-custom/* /usr/local/ispconfig/server/conf-custom/apache_ispconfig.conf.master:NameVirtualHost {tmpl_var name=”ip_address”}:82
/usr/local/ispconfig/server/conf-custom/vhost.conf.master: :82>
すべてのリクエストがlocalhost(127.0.0.1)から発信されていることがわかります。ユーザーの実際のIPアドレスを見るには、libapache2-mod-rpafをインストールする必要があります:
# apt-get install libapache2-mod-rpaf 次の内容を/etc/apache2/apache2.confに追加します:
# nano /etc/apache2/apache2.confRPAFsethostname On
RPAFproxy_ips 127.0.0.1 YOU_IP_ADDRESSInstalling And Configure Nginx
lenny-backportsリポジトリを有効にします。指示はhttp://backports.org/で見つけることができます。
apt-get install nginx デフォルトのvhostを削除します:
# rm /etc/nginx/sites-available/default ファイルを開きます:
# nano /etc/nginx/sites-available/default ファイルに次の内容を追加します:
server {
listen 80 default;
server_name _;
server_name_in_redirect off;
resolver 127.0.0.1;
#### www. redirect - all domains starting with www will be redirected to http://domain. ####
if ($host ~* ^(www\.)(.+)) {
set $rawdomain $2;
rewrite ^/(.*)$ http://$rawdomain/$1 permanent;
}
access_log /var/log/ispconfig/httpd/$host/access.log;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|html|htm|mp3)$ {
root /var/www/$host/web;
access_log off;
expires 30d;
}
location / {
root /var/www/$host/web;
index index.html index.htm index.php;
access_log off;
proxy_pass http://$host:82;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}これで完了です。Nginxはすべての静的ファイル(画像やHTMLファイルなど)を提供し、PHP関連のリクエストはApacheに転送されます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。