Nginx全流程搭建(包括軟件安裝、性能優化等)

安裝

系統環境爲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

歡迎各位大神評論和點贊!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章