1. 程式人生 > 實用技巧 >nginx 面試知識點

nginx 面試知識點

1、nginx使用哪些指令進行負載均衡(upstream七層,stream四層)

upstream aaa{
        server 127.0.0.1
        server 127.0.0.2
}

stream {
    upstream redis{
        server 127.0.0.1:6381 max_fails=2 fail_timeout=10s;
        server 127.0.0.1:6382 max_fails=2 fail_timeout=10s;
    }
    server{
        listen 6379;
        proxy_timeout 3s;
        proxy_pass redis;
    }
}

2、負載均衡策略

輪詢:
    upstream back{
        server 127.0.0.1
        server 127.0.0.2
    }

權重:
    upstream back{
        server 127.0.0.1 weight=5;
        server 127.0.0.1 weight=10;
    }

ip_hash:
    upstream back{
        ip_hash;
        server 127.0.0.1:88;
        server 127.0.0.2:80;
    }

fair:後端相應時間長短來分配
url_hash:url雜湊,每個url定向到同一個後端,後端有快取效率高

3、root和alias的區別

location /aaa/{
    root /home/www/;
}
訪問aaa/匹配對應的是/home/www/aaa/

location /bbb/{
    alias /home/www/;
}
訪問bbb/匹配對應是路徑是/home/www/,結尾必須加斜槓

4、日誌中檢查前10的ip

cat access.log|awk '{print $1}'|sort|uniq -c|sort -klnr|head -n 10

5、如何保證高併發

非同步非阻塞 epoll 一個master 管理、監控多個worker程序
每個請求進入之後,會有一個worker處理,處理到有阻塞的時候(傳送請求到後端等待迴應),註冊標記時間,待可解除阻塞(後端相應)的時候,標記啟用繼續處理。

6、nginx 為何不用多執行緒

單執行緒 採用非同步非阻塞處理請求,不必為每個請求建立一個執行緒,節約資源cpu\記憶體開支,減少cpu的上下文切換。

7、常見優化配置

worker_process  工作程序,一般和cpu核心數對應
worker_connections 最大客戶端數,工作程序數*1024,1024為每個核心允許的最大程序數
gzip壓縮 gzip on 開啟之後減少客戶端傳輸頻寬,提高頁面載入速度
靜態檔案快取
    location ~* .(jpg|jpeg|css|js)${
            expires 7d;
           }
keepalive相關超時時間
    client_body_timeout 12;
    client_header_timeout 12;
    keepalive_timeout 15;
    send_timeout 10;
access_log些緩衝區
    access_log /var/log/nginx/access.log main buffer=32k flush=1m
    32k快取區大小,緩衝時間為1分鐘

8、502報錯

fastcgi 程序是否啟動
fastcgi worker 程序數是否不夠
fastcgi 執行時間過長
fastcgi buffer 不夠(fastcgi_buffer_size 32k;fastcgi_buffers 8 32K)
proxy buffer 不夠(proxy_buffer_size 16k;proxy_buffer 4 16K)
php指令碼執行時間過長