nginxのインストール
ダウンロードアドレス: http://nginx.org/download/nginx-1.4.2.tar.gz
インストールの準備: nginx は pcre ライブラリに依存するため、pcre を最初にインストールする必要があります
yum インストール pcre pcre-devel
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.4.2.tar.gz
tar zxvf nginx-1.4.2.tar.gz
cd nginx-1.4.2
./configure --prefix=/usr/local/nginx はこのステップまで実行され、次のエラーが報告されます。
これは、gcc コンパイラーがインストールされていないことを意味します。nginx は C 言語で書かれています。もちろん C コンパイラーが必要なので、それをインストールしてください。
yum インストール gcc-c++
コマンドを再度実行すると、次のエラーが報告されます
「zlib-devel」をインストールする必要があります。SSH は次のコマンドを実行します: yum install -y zlib-devel
問題ありません。nginx をコンパイルしてインストールします。
メイク&&メイクインストール
プロセスに明らかなエラーがなければ、それは成功を意味します。
起動:
cd /ulsr/local/nginx、次の 4 つのディレクトリを参照してください。
./
....conf 構成ファイル
... HTML Web ページ ファイル
...logs ログ ファイル
...sbin メインバイナリプログラム
[root@localhost nginx]# ./sbin/nginx
nginx: [emerg] 0.0.0.0:80 へのbind() が失敗しました (98: アドレスはすでに使用されています)
....
nginx: [emerg] 0.0.0.0:80 へのbind() が失敗しました (98: アドレスはすでに使用されています)
nginx: [emerg] まだbind()できませんでした
ポート 80 をバインドできません。ポート 80 はすでに占有されています
(Apache、nginx などをインストールする場合もありますが、多くの場合、オペレーティング システムに Apache が付属し、サービスとして開始されます)
解決策: ポート 80 を占有しているソフトウェアまたはサービスを閉じます。
Nginx 設定セクション
nginx ディレクトリの下の conf ディレクトリにある Nginx.conf ファイルが nginx 設定ファイルです
// グローバル領域
worker_processes 1; // 作業中の子プロセスが 1 つあり、それ自体を変更できますが、CPU を競合する必要があるため、大きすぎて有益ではなく、通常は CPU の数に設定されます。 * コアの数
イベント {
// 一般的には、nginx 接続を設定する機能です
// たとえば、1 つのワードで同時に許可できる接続数はいくつですか
work_connections 1024; // これは、子プロセスが最大 1024 個の接続を許可することを意味します
}
http { //これは、http サーバーを構成するためのメインセクションです
Server1 { // これは仮想ホストセグメントです
Location { //画像ディレクトリなどの特別なパスまたはファイルを検索、再配置しますが、別個に処理されます
} /// .phpを個別に処理する場合
}
サーバー2 {
}
}
例 1: ドメインベースの仮想ホスティング
サーバー {
listen 80; #リスニングポート
サーバー名 a.com; #監視ドメイン名
位置 / {
root /var/www/a.com; #ルートディレクトリの場所
インデックスindex.html;
}
}
例 2: ポートベースの仮想ホスト構成
サーバー {
8080を聞いてください。
サーバー名 192.168.1.204;
位置 / {
ルート/var/www/html8080;
インデックスindex.html;
}
}
ログ管理
nginx のサーバーセクションを観察すると、次のような同様の情報が表示されます。
#access_log ログ/host.access.log main;
これは、サーバーのアクセス ログ ファイルが logs/host.access.log であることを示しています。
使用される形式は「メイン」形式です。
メインの形式に加えて、他の形式をカスタマイズできます。
主な形式は何ですか?
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
主な形式は、ログ形式を定義し、参照しやすいように名前を付けることです。
上記の例では、ログの主なタイプ、記録されたremote_addr... http_x_forwarded_for およびその他のオプションを考えてみましょう。
1: ログ形式は、どのオプションが記録されるかを示します。
デフォルトのログ形式: メイン
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
デフォルトのメインログ形式など、次のいくつかの項目を記録します。
リモート IP - リモート ユーザー/ユーザー時間リクエスト メソッド (GET/POST など) リクエスト本文の長さのリファラー ソース情報
http-user-agent ユーザー エージェント/スパイダー、転送されたリクエストの元の IP
http_x_forwarded_for: プロキシを経由する場合、プロキシはこのヘッダー情報に元の IP を追加して、元の IP を送信します
2: 一意の log_format を宣言し、名前を付けます
log_format mylog '$remote_addr- "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
次のサーバー/場所で、mylog を参照できます。
サーバーセクションでは、次のように宣言します
Nginx では、サーバーごとに異なるログが許可されます (lighttp など、一部の Web サーバーはサポートしていません)。
access_log ログ/access_8080.log mylog;
ログのログ位置のログ形式を宣言します。
実用的なアプリケーション: シェル + 時間指定タスク + nginx シグナル管理、日付ごとの完全なログ保存
分析のアイデア:
午前00:00:01に、昨日のログの名前を変更し、対応するディレクトリに置きます。
次に、USR1 情報番号が nginx を制御して新しいログ ファイルを再生成します。
具体脚本:
#!/bin/bash
Base_path='/usr/local/nginx/logs'
log_path=$(日付 -d 昨日 +"%Y%m")
day=$(日付 -d 昨日 +"%d")
mkdir -p $base_path/$log_path
mv $base_path/access.log $base_path/$log_path/access_$day.log
#echo $base_path/$log_path/access_$day.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
時限タスク
Crontab で時間指定タスクを編集する
01 00 * * * /xxx/path/b.sh 毎日 00:01 (システム負荷が小さいため、02 ~ 04 時が推奨)