ご存知のように、Apacheは良いことですが、その重さは可能性を大きく制限します。
問題を解決するために、フロントエンドとバックエンドの束が使用されます。 Apacheはバックエンドサーバーとして機能し、その他はフロントエンドサーバーとして軽量です。 この記事では、nginxがフロントエンドサーバーとして機能する束を考えます。
インターネットには、nginxの設定方法に関する記事がたくさんありますが、nginxをdirectadminコントロールパネルで動作させる方法には触れていません。
どうだった。
タスクはそうでしたが、解決策はすぐに思い浮かびませんでした。 少しグーグルで、いくつかのソリューションオプションが登場しました。
1)ポート80でリッスンしている他のデバイスにラップし、すでにnginxをリッスンします。 特定のゲームプレイを課しているという事実のため、このソリューションはあまり好きではありませんでした。
2)何らかの方法で、Apacheが別のポート(80ではない)をリッスンするようにします。
通常の状況で、ホスティングコントロールパネルがない場合は、すべてが簡単です-appache configのハンドルを修正して、コントロールパネルを使用すると、機能しません。 直接管理によってサイトの設定が少し変更されるたびに、変更されたサイトに関連するappache構成のセクション全体が上書きされます。
啓発
directadminがインストールされているディレクトリに少し登ったところ、/ usr / local / directadminで、仮想ホストを作成するためのテンプレートがあることがわかりました。 出来上がり...幸福は限りないものでした。 すべてがそれよりも簡単であることが判明しました!
実装
仮想ホストに関連する$ DIRECTADMIN_HOME / data / templates /ディレクトリから$ DIRECTADMIN_HOME / data / templates / customディレクトリにファイルをコピーする必要があります。
これは、directminバージョンを更新するときに、変更したテンプレートが標準のテンプレートで上書きされないようにするために行われます。
#cd $ DIRECTADMIN_HOME / data / templates /
#cp virtual_host.conf custom / virtual_host.conf
#cp virtual_host2.conf custom / virtual_host2.conf
#cp virtual_host_sub.conf custom / virtual_host_sub.conf
#cp virtual_host2_sub.conf custom / virtual_host2_sub.conf
コピーしたファイルで、ポートを修正する必要があります。 各ファイルでは、次の行:
<VirtualHost | IP |:80>
に置き換えます:
<VirtualHost | IP |:
8181 >
これで、apacheはポート8181で仮想ホストをリッスンします。 そして、トラフィックが配信されたように、私たちは世話をします。 より正確には、nginxがこれを処理します。
Nginxのインストール
これは基本的に行われます。
リポジトリからインストールできます(ただし、これはお勧めしません)。
#apt-get install nginx
リポジトリからインストールすることをお勧めしませんか? 新しい安定バージョンのリリースは非常に頻繁に行われるため、開発者のサイトから新しいバージョンをダウンロードすることをお勧めします。
執筆時点では、最新の安定バージョンは0.6.35で、最新の最新バージョン0.7.42およびバージョン0.4.13は、リポジトリでの比較に利用できます。
それでは、インストールを始めましょう。 プロセスを簡単に説明するか、コマンドでのみ言うこともできます。 次の
リンクでより詳細な説明を見つけることができます。
#mkdir / root / nginxsrcs && cd / root / nginxsrcs
#wget http://sysoev.ru/nginx/nginx-0.7.42.tar.gz
#tar zxf nginx-0.7.42.tar.gz
#cd nginx-0.7.42
#。/設定
#make
#make install
#cd / usr / local / nginx / conf
#vim nginx.conf
キャッシュプロキシサーバーとしてnginxを構成する必要があります。
あなたは、Apacheなしで静的(画像、JSファイル、html)を配ってみませんか? それは簡単です-nginxは ".htaccess"の操作方法を知りません(正直なところ、私はそれについて嬉しいだけです)。 ただし、必要に応じて構成できます。
次は重要な場所でマークされた設定です:
worker_processes 3;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
access_log off;
error_log off;
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
server {
access_log off;
error_log off;
listen 1.2.3.4:80; # IP:port
server_name *.*; # - . apache
charset windows-1251;
location /
{
proxy_pass h ttp://1.2.3.4:8181/; # apache.
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 8k; #128k
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
設定を保存し、nginxを実行してみてください。
すでにapacheを実行している場合、ポート80はapacheによって占有されているため、nginxは起動しない可能性があります。
ファイル/etc/httpd/conf/httpd.confを修正する必要があります。
文字列「Listen 80」を「Listen 8181」に置き換えます。
「NameVirtualHost 1.2.3.4:8181」の「NameVirtualHost 1.2.3.4:80」
Apacheを再起動します。 nginxを起動します。
出来上がり! すべてが機能します。 任意の仮想ホストを使用できます。
リアルIP
クライアントIPは1.2.3.4であることがわかります。
これは、クライアントの実際のIPがnginxによって受信され、Apacheによってトラフィックが転送されるときに、すでに内部IPから送信されているという事実により発生します。
しかし、これは問題ではありません。 Apache用の優れたmod_rpafモジュールがあります。
基本的にインストールされます。
#cd / root / nginxsrcs
#wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
#tar xzf mod_rpaf-0.6.tar.gz
#cd mod_rpaf-0.6
#apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
mod_rpaf.conf構成ファイルを作成します。
LoadModule rpaf_module /usr/lib/apache/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1 1.2.3.4
RPAFheader X-Real-IP
Apacheを再起動します。
以上で、nginx + apache + directadminが完全に機能するようになりました。