1、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,這個值不是越大越好,要可實際情況而定。
2、編寫一個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;
access 34.26.157.0/24;
deny all;
}