1. 程式人生 > 實用技巧 >Ubuntu 18.04 安裝網絡卡驅動

Ubuntu 18.04 安裝網絡卡驅動

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


上述配置都是存放在main全域性配置模組中的配置項

user用來指定nginx worker程序執行使用者以及使用者組,預設nobody賬號執行

worker_processes指定nginx要開啟的子程序數量,
執行過程中監控每個程序消耗記憶體(一般幾M~幾十M不等)根據實際情況進行調整,
通常數量是CPU核心數量的整數倍

error_log定義錯誤日誌檔案的位置及輸出級別
【debug / info / notice / warn / error / crit】

pid用來指定程序id的儲存檔案的位置

worker_rlimit_nofile用於指定一個程序可以開啟最多檔案數量的描述

events:用於nginx工作模式的配置

events {
    worker_connections  1024;
    multi_accept on;
    use epoll;
}


上述配置是針對nginx伺服器的工作模式的一些操作配置

worker_connections 指定最大可以同時接收的連線數量,
這裡一定要注意,最大連線數量是和worker processes共同決定的。

multi_accept 配置指定nginx在收到一個新連線通知後儘可能多的接受更多的連線

use epoll 配置指定了執行緒輪詢的方法,如果是linux2.6+,使用epoll,
如果是BSD如Mac請使用Kqueue

http:用於進行http協議資訊的一些配置

作為web伺服器,http模組是nginx最核心的一個模組,配置項也是比較多的,
專案中會設定到很多的實際業務場景,需要根據硬體資訊進行適當的配置,
常規情況下,使用預設配置即可


http {
    ##
    # 基礎配置
    ##
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;
    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    ##
    # SSL證書配置
    ##
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;
    ##
    # 日誌配置
    ##
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    ##
    # Gzip 壓縮配置
    ##
    gzip on;
    gzip_disable "msie6";
    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript
 text/xml application/xml application/xml+rss text/javascript;
    ##
    # 虛擬主機配置
    ##
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
 
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,佔用記憶體較少,衝突率越高,
檢索速度變慢

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

3) SSL證書加密
ssl_protocols:指令用於啟動特定的加密協議,nginx在1.1.13和1.0.12版本後預設
是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,TLSv1.1與TLSv1.2要確保
OpenSSL >= 1.0.1 ,SSLv3 現在還有很多地方在用但有不少被攻擊的漏洞。

ssl prefer server ciphers:設定協商加密演算法時,優先使用我們服務端的加密套件,
而不是客戶端瀏覽器的加密套件
4) 壓縮配置
gzip 是告訴nginx採用gzip壓縮的形式傳送資料。這將會減少我們傳送的資料量。

gzip_disable 為指定的客戶端禁用gzip功能。我們設定成IE6或者更低版本以使我
們的方案能夠廣泛相容。

gzip_static 告訴nginx在壓縮資源之前,先查詢是否有預先gzip處理過的資源。這
要求你預先壓縮你的檔案(在這個例子中被註釋掉了),從而允許你使用最高壓
縮比,這樣nginx就不用再壓縮這些檔案了(想要更詳盡的gzip_static的資訊,請
點選這裡)。

gzip_proxied 允許或者禁止壓縮基於請求和響應的響應流。我們設定為any,意味
著將會壓縮所有的請求。

gzip_min_length 設定對資料啟用壓縮的最少位元組數。如果一個請求小於1000位元組,
我們最好不要壓縮它,因為壓縮這些小的資料會降低處理此請求的所有程序的速度。

gzip_comp_level 設定資料的壓縮等級。這個等級可以是1-9之間的任意數值,9是
最慢但是壓縮比最大的。我們設定為4,這是一個比較折中的設定。

gzip_type 設定需要壓縮的資料格式。上面例子中已經有一些了,你也可以再新增
更多的格式。

5) 檔案快取配置
open_file_cache 開啟快取的同時也指定了快取最大數目,以及快取的時間。我們
可以設定一個相對高的最大時間,這樣我們可以在它們不活動超過20秒後清除掉。

open_file_cache_valid 在open_file_cache中指定檢測正確資訊的間隔時間。

open_file_cache_min_uses 定義了open_file_cache中指令引數不活動時間期間裡
最小的檔案數。

open_file_cache_errors 指定了當搜尋一個檔案時是否快取錯誤資訊,也包括再次
給配置中新增檔案。我們也包括了伺服器模組,這些是在不同檔案中定義的。如果
你的伺服器模組不在這些位置,你就得修改這一行來指定正確的位置。

server:用於進行伺服器訪問資訊的配置

srever模組配置是http模組中的一個子模組,用來定義一個虛擬訪問主機,
也就是一個虛擬伺服器的配置資訊

server {
        listen        80;
        server_name localhost    192.168.1.100;
        root        /nginx/www;
        index        index.php index.html index.html;
        charset        utf-8;
        access_log    logs/access.log;
        error_log    logs/error.log;
        ......
}

server:一個虛擬主機的配置,一個http中可以配置多個server

server_name:用力啊指定ip地址或者域名,多個配置之間用空格分隔

root:表示整個server虛擬主機內的根目錄,所有當前主機中web專案的根目錄

index:使用者訪問web網站時的全域性首頁

charset:用於設定www/路徑中配置的網頁的預設編碼格式

access_log:用於指定該虛擬主機伺服器中的訪問記錄日誌存放路徑

error_log:用於指定該虛擬主機伺服器中訪問錯誤日誌的存放路徑

location:用於進行訪問路由的配置

location模組是nginx配置中出現最多的一個配置,主要用於配置路由訪問資訊
在路由訪問資訊配置中關聯到反向代理、負載均衡等等各項功能,所以location
模組也是一個非常重要的配置模組


location / {
          root    /nginx/www;
          index    index.php index.html index.htm;
}
location /:表示匹配訪問根目錄

root:用於指定訪問根目錄時,訪問虛擬主機的web目錄

index:在不指定訪問具體資源時,預設展示的資原始檔列表
 
 
location /api {
            proxy_pass http://www.baidu.com;

            #以下是一些反向代理的配置可刪除

            proxy_redirect     off; 

            #後端的Web伺服器可以通過X-Forwarded-For獲取使用者真實IP

            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    128k; #緩衝區代理緩衝使用者端請求的最大位元組數

            proxy_connect_timeout      300; #nginx跟後端伺服器連線超時時間(代理連線超時)

            proxy_send_timeout         300; #後端伺服器資料回傳時間(代理髮送超時)

            proxy_read_timeout         300; #連線成功後,後端伺服器響應時間(代理接收超時)

            proxy_buffer_size          4k; #設定代理伺服器(nginx)儲存使用者頭資訊的緩衝區大小

            proxy_buffers              4 32k; #proxy_buffers緩衝區,網頁平均在32k以下就設定

            proxy_busy_buffers_size    64k; #高負荷下緩衝大小(proxy_buffers*2)

            proxy_temp_file_write_size 64k; #設定快取資料夾大小,大於這個值,
                                                                將從upstream伺服器傳

    }

upstream:用於進行負載均衡的配置

upstream模組主要負責負載均衡的配置,
通過預設的輪詢排程方式來分發請求到後端伺服器

  upstream name {
        ip_hash;
        server 192.168.1.100:8000;
        server 192.168.1.100:8001 down;
        server 192.168.1.100:8002 max_fails=3;
        server 192.168.1.100:8003 fail_timeout=20s;
        server 192.168.1.100:8004 max_fails=3 fail_timeout=20s;
  }
 
ip_hash:指定請求排程演算法,預設是weight權重輪詢排程,可以指定

server host:port:分發伺服器的列表配置

-- down:表示該主機暫停服務

-- max_fails:表示失敗最大次數,超過失敗最大次數暫停服務

-- fail_timeout:表示如果請求受理失敗,暫停指定的時間之後重新發起請求

跨域代理:

在http這個配置項的下面找到server這個配置項,我們在server中實現跨域代理

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

上面這個配置的意思是  當訪問location 下面的/demo 路徑的時候 
找到根檔案加(root html),訪問根資料夾下面的index.html
![image.png](https://upload-images.jianshu.io/upload_images/17573670-8a75ac3d34411088.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

nginx常用命令操作:

//強制停止nginx伺服器,如果有未處理的資料,丟棄
nginx -s stop

//停止nginx伺服器,如果有未處理的資料,等待處理完成之後停止
nginx -s quit

//重啟nginx伺服器
nginx -s reload