Nginx常見筆試題

1、Nginx實現HTTP及TCP負載均衡的模塊?
HTTP就是工作在七層協議
TCP工作在四層協議

Nginx七層負載:
七層通過虛擬的URL或主機名接收請求
在server裏面配置location反向代理給真實服務器。

Nginx四層負載:
四層就是基於IP+端口的負載均衡
可以定義stream,它和server平等級,可以定義多個端口,然後再pare_pass
反向代理到真實服務器。

2、Nginx中的模塊分類及常見核心模塊有哪些?
Nginx的架構
Master:
只負載任務分發調度,加載conf配置文件和調度worker。
worker:
只負責處理Master分發的請求,可以在全局配置裏面配置多個進程數量。

Standard HTTP modules標準的http模塊
Optional HTTP modules可選的http模塊
Mail modules郵件模塊
Stream modules:流模塊,傳輸層代理,4層tcp和udp代理,傳輸層代理
3rd party modules第三方模塊

3、Nginx負載均衡中常見的算法及原理有哪些?
常見的算法有
輪詢,加權輪詢:
輪詢是一定時間給每臺服務器分配數量差不多的請求。
加權輪詢是根據服務器的性能分配,權重越大分配請求越多。
ip_hash:
客戶端綁定請求,每次請求就在綁定的服務器在處理
least_conn:
哪個服務器的閒置資源多,請求就多往哪個服務器發送。
fail:
根據請求響應時間,智能分配請求數量
url_hash:
根據urlhash分配請求


4、Nginx實現負載均衡集羣的主要配置參數要哪些?
比如http的負載均衡,Nginx作爲反向代理
配置upstream參數爲真實服務器名稱(跟server同級)
然後在server配置裏面配置location判斷什麼頁面
通過proey_pass 代理到處理什麼頁面的服務器。


5、Nginx負載均衡中常用的server配置參數有哪些?
upstream:定義一組真實服務器
proxy_pass:反向代理
weight:輪詢權值
least_conn:資源服務器哪個資源佔用少請求多往那個發
fair:根據服務器響應時間分配請求
url_hash:根據urlhash分配請求

6、Nginx負載均衡中通過哪些參數實現對節點的健康狀態檢查?
max_fails=3 fail_timeout=10s;
如果某服務器請求失敗次數超過三次,nginx會把他踢出羣聊,恢復又重新加入。
location /status
查看nginx訪問狀態


7、Nginx負載均衡的指令有哪些?
weight:輪詢權值
fair:根據服務器響應時間分配請求
least_conn:根據服務器資源分配請求
url_hash:根據urlhash分配請求
默認:輪詢
location /status:查看狀態

8、Nginx如何實現TCP四層轉發,用到的模塊是?
stream模塊


9、Apache實現Tomcat負載均衡的方式?
主要是配置proxy
在裏面加入想要負載均衡的機器,以及配置負載均衡的算法
比如:loadfactor 權值調整,設置均衡分配請求,指定超時等。

https://blog.csdn.net/weixin_42480196/article/details/101022767

 

10、描述DDOS、CC、爬蟲等攻擊手段,描述Nginx如何進行防護?
需要講解


11、描述Apache、Nginx、Lighttpd、IIS等WEB服務器的特點?
Apache:
兼容性強,和php無縫結合,穩定性強,處理動態模塊效率較高。
Nginx:
內存資源佔用少,處理靜態網頁效率高,一般是企業中間件反向代理的首選,異步處理扛高併發請求。
Lighttpd:

 

12、描述WEB服務器中的select和epoll模型的特點?
都是多路複用io
select:
單個進程可以同時處理多個io請求,但是連接上這些請求,其他所有請求就被阻塞了,
然後內核就會檢查select負責的fd(文件描述符),之後再把它負責到緩衝區。

epoll:
epoll模型打開的fd的數量沒有限制,大概一G打開十萬,而且它不用內核檢查再複製,而是直接
在打開註冊的時候就複製到了內核。

所以select效率是沒有epoll高的。

13、描述Nginx服務控制信號有哪些?描述Nginx服務器啓動腳本的編寫思路?
HUP: 這個是重新加載nginx配置文件
QUIT:殺死nginx進程
USR1:切換日誌文件
USR2:平滑升級發送信號
首先定義pid和定義日誌路徑,之後創建日誌文件,再判斷nginx pid文件是否存在
也就是判斷nginx關閉還是打開,是打開就mv把日誌移動到指定位置,然後再USR1新生成一個日誌文件


14、描述Nginx中worker_processes、worker_cpu_affinity、worker_rlimit_nofile、worker_connections配置項含義?
worker_processes:nginx工作進程數量
worker_cpu_affinity:cpu個數
worker_rlimit_nofile:一個nginx工作進程數量打開文件數量限制
worker_connections:每個進程連接最大數量

15、描述Nginx中$remote_addr、$status、$http_referer、$http_user_agent等變量的含義?
$http_user_agent:
判斷客戶端手機什麼型號或者瀏覽器什麼類型,可以給指定的型號給定不同的頁面。
$http_referer:訪問控制返回狀態碼
$status:查看網站的訪問狀態等信息,比如連接多少,多少次握手,響應多少請求,

$remote_addr:可以在後面指定ip,如果匹配到這個ip可以通過port_pass代理到
自定義的機器組。

16、如何查看Nginx用戶的訪問狀態?
可以在nginx主配置文件nginx.conf 開啓用戶日誌,log_format
路徑位於:/nginx/logs/access.log
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

17、描述Nginx支持PHP頁面的解析的兩種方式?
一:nginx將php請求轉向別的lamp服務器
二:nginx調用php-fpm模塊處理php頁面

18、描述Nginx調用FPM時,配置優化項有哪些?
proxy_pass角度:反向代理請求,更多的是優化nginx負載均衡算法,使其請求
更合理的分配給其他節點服務器。

FPM角度:從fpm角度,更多的是優化php-fpm.conf文件參數,比如優化啓動創建進程數量
,設置最大空閒進程數量和設置最小空閒進程數量。

PHP角度:
在php.ini配置文件配置 ZendGuardLoader.so 加速模塊,
使nginx和php在同一臺機器,這樣通信就減少網絡佔用。

19、什麼是正向代理?什麼是反向代理?
正向代理:指的是客戶端想去一個不能去的網站,從而把請求交給別的代理服務器
然後代理服務器幫用戶取回來內容。

反向代理:用戶發送一個請求,然後到了某臺服務器,這臺服務器是反向代理
接着反向代理服務器把用戶的請求轉發給真正用戶要去的服務器,再取回數據,
由反向代理返回數據給用戶。


20、描述LAMP及LNMP的對比?
LAMP:apache和php的結合,lamp結合的更加緊密,而lnmp需要fpm來連接nginx和php。
lamp相比於lnmp更加穩定。
lnmp佔用內存較少,高併發配置比較方便。
lamp相對佔用內存資源多,適用於較小型的網站。

21、描述Nginx優化的常見方式(10種)
隱藏版本號,網頁的緩存,nginx腳本定時切割,設置防盜鏈,反向代理算法,設置基準認證
網頁的壓縮,設置資源防盜鏈,nginx的熱升級,nginx的長鏈接,nginx的進程和cpu配置
加入epoll模型

22、描述Nginx如何分離PC端和手機端的頁面訪問?
先默認訪問的是pc端網頁
然後使用 location 的http_user_agent判斷是不是手機客戶端。

23、描述Nginx實現平滑升級的過程?
先下載新版本的nginx,然後make編譯,之後把老版本的nginx配置文件改名字,
把新版本的nginx配置文件放入老版本配置文件,然後給主進程發信號,新舊進程一起
起來,然後主進程會關閉工作進程,然後再關閉主進程。

24、描述Nginx實現日誌切割腳本的編寫思路?
先創建pid和log存放目錄變量,之後創建保存log的文件,然後判斷pip是否存在,
存在就mv把數據轉移到存放日誌的目錄,再kill -USR1 產生新日誌文件。

25、描述Nginx實現防盜鏈的實現思路?
先設置信任網站valid_referers,然後none判斷請求頭是不是爲空,爲空就直接訪問
blocked ,不以hhtp://和https://開頭
然後 $invalid_referer參數判斷是不是信任域名,不是的話rewrite重定向到一個空頁面。


26、如何查看CPU的型號、核心數、線程數?
cat /proc/cpuinfo | grep 'model name' |uniq //查看cup型號
cat /proc/cpuinfo | grep "cpu cores" | uniq //查看cpu核心數
grep 'processor' /proc/cpuinfo | sort -u | wc -l //cpu線程數


27、Nginx實現網站靜動分離的配置思路?
靜態一般指的是html頁面,動態一般是jsp,php
可以用一組nginx服務器做反向代理
然後判斷是靜態頁面就往真實nginx服務器放
判斷是jsp,就往tomcat服務器放請求。

28、Nginx location匹配規則方式及匹配優先級?
location = 》》 location 全路徑 》》 localtion ^~ 》》 location 正則 》》
location 部分路徑 》》 location / 通用匹配

29、Nginx生產環境中location匹配配置實際建議?
最少要有通用匹配,和對靜態頁面處理,動態頁面處理

30、Nginx Rewrite語法及標誌位有哪些?

1、語法:rewrite regex(表達式) replacement(替換項) flag(標誌位)。

http://www.sbc.com/qwe/s/1.html
if ( $http_user ~ Chrom ) {
rewrite ^(.*)$ /sssss/$1 break;
}

^(.*)$匹配/qwe/s/1.html部分,把http://www.sbc.com/qwe/s/1.html
訪問路徑改爲:http://www.sbc.com/sssss/qwe/s/1.html

31、什麼是301、什麼是302?
301:永久重定向
302:暫時重定向

32、通過rewrite實現所有對www.360buy.com的訪問rewrite到www.jd.com

用 if判斷 ($host "www.source.com") 輸入的主機是不是 www.source.com
如果是 再拿rewrite重定向到 www.jd.com

if ($host = "www.360buy.com") {
rewrite (.*) http://www.jd.com;
}

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