nginx面試題

一、Nginx是如何實現高併發的nginx

    service nginx start以後,而後輸入#ps -ef|grep nginx,會發現Nginx有一個master進程和若干個worker進程,這些worker進程是平等的,都是被master fork過來的。在master裏面,先創建須要listen的socket(listenfd),而後再fork出多個worker進程。當用戶進入nginx服務的時候,每一個worker的listenfd變的可讀,而且這些worker會搶一個叫accept_mutex的東西,accept_mutex是互斥的,一個worker獲得了,其餘的worker就歇菜了。而搶到這個accept_mutex的worker就開始「讀取請求--解析請求--處理請求」,數據完全返回客戶端以後(目標網頁出如今電腦屏幕上),這個事件就算完全結束。併發

nginx用這個方法是底下的worker進程搶注用戶的要求,同時搭配「異步非阻塞」的方式,實現高併發量。異步

【評析】在nginx.conf裏第二行就是work_process,有默認是4的,也能夠更改爲auto,這個值不是越大越好,要可實際狀況而定。socket

 

二、編寫一個Nginx的access模塊,要求准許192.168.3.29/24的機器訪問,准許10.1.20.6/16這個網段的全部機器訪問,准許34.26.157.0/24這個網段訪問,除此以外的機器不許許訪問。高併發

location/{進程

access 192.168.3.29/24;事件

access 10.1.20.6/16;get

access 34.26.157.0/24;it

deny all;io

}

相關文章
相關標籤/搜索