1.Nginx的優(yōu)勢
(1).發(fā)展趨勢
(2).logo
(3).簡介
Nginx (engine x) 是一個高性能的HTTP(解決C10k的問題)和反向代理服務器纹因,也是一個IMAP/POP3/SMTP服務器。
反代圖示:
(4).優(yōu)勢
1.IO多路復用
2.高并發(fā)
3.epoll
4.異步
5.非阻塞
IO多路復用
理論方法:
1.最傳統(tǒng)的多進程并發(fā)模型 (每進來一個新的I/O流會分配一個新的進程管理琳拨。)
2.I/O多路復用 (單個線程瞭恰,通過記錄跟蹤每個I/O流(sock)的狀態(tài),來同時管理多個I/O流 狱庇。)
發(fā)明它的原因惊畏,是盡量多的提高服務器的吞吐能力。
在同一個線程里面密任, 通過撥開關的方式颜启,來同時傳輸多個I/O流
技術類型:
1.select select是第一個實現(xiàn) (1983 左右在BSD里面實現(xiàn)的)。
select 被實現(xiàn)以后批什,很快就暴露出了很多問題农曲。
? select 會修改傳入的參數數組,這個對于一個需要調用很多次的函數,是非常不友好的乳规。
? select 如果任何一個sock(I/O stream)出現(xiàn)了數據形葬,select 僅僅會返回,但是并不會告訴你是那個sock上有數
據暮的,于是你只能自己一個一個的找笙以,10幾個sock可能還好,要是幾萬的sock每次都找一遍...
? select 只能監(jiān)視1024個鏈接冻辩。
? select 不是線程安全的猖腕,如果你把一個sock加入到select, 然后突然另外一個線程發(fā)現(xiàn),這個sock不用恨闪,要收
回倘感,這個select 不支持的,如果你喪心病狂的竟然關掉這個sock, select的標準行為是不可預測的
2.poll 于是14年以后(1997年)一幫人又實現(xiàn)了poll, poll 修復了select的很多問題咙咽,比如
? poll 去掉了1024個鏈接的限制老玛,于是要多少鏈接呢, 主人你開心就好钧敞。
? poll 從設計上來說蜡豹,不再修改傳入數組,不過這個要看你的平臺了溉苛,所以行走江湖镜廉,還是小心為妙。
其實拖14年那么久也不是效率問題愚战, 而是那個時代的硬件實在太弱娇唯,一臺服務器處理1千多個鏈接簡直就是神
一樣的存在了,select很長段時間已經滿足需求寂玲。
但是poll仍然不是線程安全的视乐, 這就意味著,不管服務器有多強悍敢茁,你也只能在一個線程里面處理一組I/O流佑淀。
你當然可以那多進程來配合了,不過然后你就有了多進程的各種問題彰檬。
3. epoll 于是5年以后, 在2002, 大神 Davide Libenzi 實現(xiàn)了epoll.
epoll 可以說是I/O 多路復用最新的一個實現(xiàn)伸刃,epoll 修復了poll 和select絕大部分問題, 比如:
? epoll 現(xiàn)在是線程安全的。
? epoll 現(xiàn)在不僅告訴你sock組里面數據逢倍,還會告訴你具體哪個sock有數據捧颅,你不用自己去找了。
2.Nginx部署-Yum
(1).官網鏈接
http://www.nginx.org
Stable version: 最新穩(wěn)定版较雕,生產環(huán)境上建議使用的版本
![image.png](https://upload-images.jianshu.io/upload_images/16292125-38ff4e15e21f918c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
(2).配置Yum源
1.12
官方圖示:
操作示范:
(3).環(huán)境
systemctl stop firewalld 關防火墻
setengorce 0 關selinux
(4).安裝
yum -y install nginx
systemctl start nginx
systemctl enable nginx
nginx -V 查看安裝附帶的功能模塊
(5).測試
3.Nginx配置文件
rpm -ql nginx
未完待續(xù)..........