安裝
系統環境爲CentOS7.3,Nginx版本爲1.14.0
安裝gcc gcc-c++
[root@localhost ~]# yum install -y gcc gcc-c++
安裝pcre庫
[root@localhost ~]# yum install -y pcre pcre-devel
安裝openssl庫
[root@localhost ~]# yum install -y openssl openssl-devel
安裝zlib庫
[root@localhost ~]# yum install -y zlib zlib-devel
安裝nginx
下載:https://nginx.org/download/nginx-1.16.1.tar.gz
#解壓並放到指定位置
[root@localhost ~]# tar -zxvf nginx-1.16.1.tar.gz
[root@localhost ~]# mv nginx-1.14.0 /data/nginx
[root@localhost ~]# ./configure --prefix=/usr/local/nginx
[root@localhost ~]# make && make install
啓動nginx
[root@localhost ~]# cd /data/nginx/sbin/
# 啓動
[root@localhost ~]# ./nginx
# 重啓
[root@localhost ~]# ./nginx -s reload
# 停止
[root@localhost ~]# ./nginx -s stop
# 測試配置文件
[root@localhost ~]# ./nginx -t
# 強制關閉
[root@localhost ~]# pkill nginx
配置
位置:/data/nginx/conf/nginx.conf
Nginx配置文件常見結構的從外到內依次是「http」「server」「location」等等,缺省的繼承關係是從外到內,也就是說內層塊會自動獲取外層塊的值作爲缺省值。
# 定義nginx運行的用戶和用戶組
# user root root;
# nginx進程數,建議設置爲等於CPU總核心數,默認爲1
worker_processes 2;
# 全局錯誤日誌定義類型【debug|info|notice|warn|error|crit】
#error_log /usr/local/nginx/logs/error.log info;
# 進程pid文件 指定nginx進程運行文件存放地址
pid /usr/local/nginx/logs/nginx.pid;
# 指定進程可以打開的最大描述符:數目與ulimit -n的數值保持一致
worker_rlimit_nofile 65535;
# 網絡請求
events {
# Nginx服務器提供了多個事件驅動器模型來處理網絡消息
use epoll;
# 單個進程最大連接數(最大連接數=連接數*進程數)
worker_connections 65535;
# 防止多個進程爭搶資源
accept_mutex on;
# 想要高併發就要把此參數設置成ON
multi_accept on;
}
# 設定http服務器,利用它的反向代理功能提供負載均衡支持
http {
# 全局模塊設置
# 文件擴展名與文件類型映射表
include mime.types;
# 默認文件類型-字符流
default_type application/octet-stream;
# 默認字符編碼
# charset utf-8;
# 服務器名字的hash表大小
server_names_hash_bucket_size 128;
# 客戶端請求頭部的緩衝區大小.根據分頁大小設置getconf PAGESIZE
client_header_buffer_size 4k;
# 客戶請求頭緩衝大小
large_client_header_buffers 4 64k;
# 設定通過nginx上傳文件的大小
client_max_body_size 8m;
# 開啓高效文件傳輸模式
sendfile on;
# 開啓目錄列表訪問 合適下載服務器 默認關閉
autoindex on;
# 此選項在開啓sendfile時使用,等到數據包最大時 一次性傳輸文件 解決網絡堵塞
tcp_nopush on;
# 告訴nginx不要緩存數據
tcp_nodelay on;
# 長連接超時時間 單位爲秒
keepalive_timeout 120;
# FastCGI模塊設置
# 第一行代碼是爲FastCGI緩存指定一個文件路徑、目錄結構等級、關鍵字區域存儲時間和非活動刪除時間。
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
# 指定連接到後端FastCGI的超時時間
fastcgi_connect_timeout 300;
# 指定向FastCGI傳送請求的超時時間,這個值是已經完成兩次握手後向FastCGI傳送請求的超時時間。
fastcgi_send_timeout 300;
# 指定接收FastCGI應答的超時時間,這個值是已經完成兩次握手後接收FastCGI應答的超時時間。
fastcgi_read_timeout 300;
# 用於指定讀取FastCGI應答第一部分需要用多大的緩衝區,這個值表示將使用1個64KB的緩衝區讀取應答的第一部分(應答頭),可以設置爲fastcgi_buffers選項指定的緩衝區大小。
fastcgi_buffer_size 64k;
# 指定本地需要用多少和多大的緩衝區來緩衝FastCGI的應答請求。如果一個PHP腳本所產生的頁面大小爲256KB,那麼會爲其分配4個64KB的緩衝區來緩存;如果頁面大小大於256KB,那麼大於256KB的部分會緩存到fastcgi_temp指定的路徑中,但是這並不是好方法,因爲內存中的數據處理速度要快於硬盤。一般這個值應該爲站點中PHP腳本所產生的頁面大小的中間值,如果站點大部分腳本所產生的頁面大小爲256KB,那麼可以把這個值設置爲“16 16k”、“4 64k”等。
fastcgi_buffers 4 64k;
# 的默認值是fastcgi_buffers的兩倍。
fastcgi_busy_buffers_size 128k;
# 表示在寫入緩存文件時使用多大的數據塊,默認值是fastcgi_buffers的兩倍。
fastcgi_temp_file_write_size 128k;
# 表示開啓FastCGI緩存併爲其指定一個名稱。開啓緩存非常有用,可以有效降低CPU的負載,並且防止502錯誤的發生,但是開啓緩存也會引起很多問題,要視具體情況而定。
fastcgi_cache TEST;
# 用來指定應答代碼的緩存時間,實例中的值表示將200和302應答緩存一個小時,將301應答緩存1天,其他應答均緩存1分鐘。
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
# gzip模塊設置
gzip on;
gzip_min_length 2k;
gzip_buffers 4 16k;
gzip_comp_level 5;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_http_version 1.0;
gzip_disable "MSIE [1-6]\.";
gzip_proxied expired no-cache no-store private auth;
gzip_vary on;
# 版本安全
server_tokens off;
upstream tomcatServer{
server 192.168.0.22:19018 weight=1;
}
# 虛擬主機模塊設置
server {
# 監聽端口
listen 80;
# 域名可以有多個 用空格隔開
server_name xieweikun.com.cn;
index index.html index.htm index.php
# 緩存到哪兒
root /data/www/xx;
# 日誌
access_log /usr/local/nginx/logs/tomcatServer-access.log;
error_log /usr/local/nginx/logs/tomcatServer-error.log;
location / {
proxy_pass http://tomcatServer;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
日誌切割
新建腳本
[root@localhost ~]# vim nginx_logs.sh
#!/bin/bash
# 設置日誌文件存放目錄
LOG_HOME="/usr/local/nginx/logs"
# 備份文件名稱
LOG_PATH_ACC=tomcatServer-access-"$(date +%Y%m%d)".log
LOG_PATH_ERR=tomcatServer-error-"$(date +%Y%m%d)".log
# 重命名日誌文件
mv ${LOG_HOME}/tomcatServer-access.log ${LOG_HOME}/${LOG_PATH_ACC}
mv ${LOG_HOME}/tomcatServer-error.log ${LOG_HOME}/${LOG_PATH_ERR}
# 向nginx主進程發信號重新打開日誌
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
# 執行文件授權
[root@localhost ~]# chmod u+x nginx_logs.sh
新建定時任務
#每天23:59分開始執行
[root@localhost ~]# crontab -e
59 23 * * * sh /usr/local/nginx/sbin/nginx_logs.sh
啓動定時任務
[root@localhost ~]# service crond restart