酒濃碼濃 - nginx常用配置

nginx常用配置

1. 基礎配置

main                                # 全局配置

events {                            # nginx工作模式配置
}

http {                                # http設置
    ....

    server {                        # 服務器主機配置
        ....
        location {                    # 路由配置
            ....
        }

        location path {
            ....
        }

        location otherpath {
            ....
        }
    }

    server {
        ....

        location {
            ....
        }
    }

    upstream name {                    # 負載均衡配置
        ....
    }
}

2. Main模塊配置說明

  1. user用來指定nginx worker進程運行用戶以及用戶組,默認nobody賬號運行
  2. worker_processes指定nginx要開啓的子進程數量,運行過程中監控每個進程消耗內存(一般幾M~幾十M不等)根據實際情況進行調整,通常數量是CPU內核數量的整數倍
  3. error_log定義錯誤日誌文件的位置及輸出級別【debug / info / notice / warn / error / crit】
  4. pid用來指定進程id的存儲文件的位置
  5. worker_rlimit_nofile用於指定一個進程可以打開最多文件數量的描述

3. Event模塊

  1. worker_connections 指定最大可以同時接收的連接數量,這裏一定要注意,最大連接數量是和worker processes共同決定的。
  2. multi_accept 配置指定nginx在收到一個新連接通知後儘可能多的接受更多的連接
  3. use epoll 配置指定了線程輪詢的方法,如果是linux2.6+,使用epoll,如果是BSD如Mac請使用Kqueue

4. Http模塊

  • sendfile on:配置on讓sendfile發揮作用,將文件的回寫過程交給數據緩衝去去完成,而不是放在應用中完成,這樣的話在性能提升有有好處
  • tc_nopush on:讓nginx在一個數據包中發送所有的頭文件,而不是一個一個單獨發
  • tcp_nodelay on:讓nginx不要緩存數據,而是一段一段發送,如果數據的傳輸有實時性的要求的話可以配置它,發送完一小段數據就立刻能得到返回值,但是不要濫用哦
  • keepalive_timeout 10:給客戶端分配連接超時時間,服務器會在這個時間過後關閉連接。一般設置時間較短,可以讓nginx工作持續性更好
  • client_header_timeout 10:設置請求頭的超時時間
  • client_body_timeout 10:設置請求體的超時時間
  • send_timeout 10:指定客戶端響應超時時間,如果客戶端兩次操作間隔超過這個時間,服務器就會關閉這個鏈接
  • limit_conn_zone $binary_remote_addr zone=addr:5m :設置用於保存各種key的共享內存的參數,
  • limit_conn addr 100: 給定的key設置最大連接數
  • server_tokens:雖然不會讓nginx執行速度更快,但是可以在錯誤頁面關閉nginx版本提示,對於網站安全性的提升有好處哦
  • include /etc/nginx/mime.types:指定在當前文件中包含另一個文件的指令
  • default_type application/octet-stream:指定默認處理的文件類型可以是二進制
  • type_hash_max_size 2048:混淆數據,影響三列衝突率,值越大消耗內存越多,散列key衝突率會降低,檢索速度更快;值越小key,佔用內存較少,衝突率越高,檢索速度變慢

5. 日誌配置

  • access_log logs/access.log:設置存儲訪問記錄的日誌
  • error_log logs/error.log:設置存儲記錄錯誤發生的日誌

6. Server模塊

定義

sever模塊配置是http模塊中的一個子模塊,用來定義一個虛擬訪問主機,也就是一個虛擬服務器的配置信息

  • server:一個虛擬主機的配置,一個http中可以配置多個server
  • server_name:用力啊指定ip地址或者域名,多個配置之間用空格分隔
  • root:表示整個server虛擬主機內的根目錄,所有當前主機中web項目的根目錄
  • index:用戶訪問web網站時的全局首頁
  • charset:用於設置www/路徑中配置的網頁的默認編碼格式
  • access_log:用於指定該虛擬主機服務器中的訪問記錄日誌存放路徑
  • error_log:用於指定該虛擬主機服務器中訪問錯誤日誌的存放路徑

7. location模塊

location模塊是nginx配置中出現最多的一個配置,主要用於配置路由訪問信息

在路由訪問信息配置中關聯到反向代理、負載均衡等等各項功能,所以location模塊也是一個非常重要的配置模塊

(1) 基本配置:

location / {
            root   html;
            index  index.html index.htm;
        }

location /:表示匹配訪問根目錄
root:用於指定訪問根目錄時,訪問虛擬主機的web目錄 index:在不指定訪問具體資源時,默認展示的資源文件列表

(2) 反向代理配置方式:

 location /ole-platform {
            proxy_pass   http://ole-platform_sim/ole-platform;
            proxy_set_header host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 2000m;
        }

(3) upstream模塊:

 upstream ueditor_sim {
      server   192.168.1.178:8312;
    }

upstream模塊主要負責負載均衡的配置,通過默認的輪詢調度方式來分發請求到後端服務器

ip_hash:指定請求調度算法,默認是weight權重輪詢調度,可以指定
server host:port:分發服務器的列表配置

(4) 帶權重的配置:

upstream test {
    server 192.168.0.1 weight=5;
    ip_hash;
    server 192.168.0.2 weight=7;
}

 

本文用於筆者記錄備用

參考:https://domyselfzy.github.io/views/nginx/nginx.html#%E5%85%AB%E3%80%81nginx%E9%85%8D%E7%BD%AE

 

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