做者:JackTian
微信公衆號:傑哥的IT之旅(ID:Jake_Internet)前端
系列導讀nginx
1、什麼是 Nginx?
Nginx是一個高性能的HTTP和反向代理Web服務器,也提供了IMAP / POP3 / SMTP服務,由伊戈爾·賽索耶夫爲俄羅斯訪問量第二的Rambler.ru站點而開發,第一個公開版本0.1.0發佈於2004年10月4日,特色是佔有內存少,併發能力強,專爲性能優化而開發,穩定性和低系統資源消耗,以及對HTTP併發鏈接的高處理能力,可支持單臺高達50000個併發鏈接數。shell
那麼,在事實上Nginx的併發能力在同類型的網頁服務器中表現較好,實際環境中,若是咱們採用Nginx的話,多是以下該場景的架構圖。其實,在以下這種架構圖中,Nginx服務器你能夠直接理解爲是一臺負載均衡服務器或者反向代理服務器,因此當客戶端發出請求到Nginx服務器時,Nginx服務器需將它配置好的規則由客戶端發來的請求並轉發到後端的LAMP、Tomcat、LNMP上。數據庫
2、爲何要用 Nginx?
做爲 Web 服務器
相比 Apache,Nginx 使用資源更少,支持更多的併發鏈接數。在高併發的狀況下,Nginx 是 Apache 服務器的替代品,Nginx 做爲負載均衡服務器,內部是支持Rails和PHP程序對外服務,也支持做爲HTTP代理服務器對外服務,採用C語言編寫,不管在系統資源開銷仍是CPU使用效率要比Perlbal好不少。後端
Nginx 配置簡單,Apache 複雜
Nginx 啓動容易,幾乎能夠作到7*24小時不間斷運行,即使很長時間未從新啓動,也可以在不間斷服務的狀況下對軟件版本進行升級,靜態處理性能要比 Apache 高 3倍以上,Nginx 須要配合其餘後端來進行使用,而 Apache 對 PHP 支持較簡單,組件同時也比 Nginx 多。瀏覽器
核心點
Nginx 是異步的,多鏈接可對應一個進程;
Apache 是同步多進程模型,一個鏈接對應一個進程;安全
擅長領域
Nginx 適用於前端處理靜態請求;
Apache 適用於後端處理動態請求;性能優化
3、Nginx 安裝
安裝支持軟件bash
Nginx 的配置及運行須要pcre、zlib軟件包的支持,需先安裝這些軟件的開發包供相應的庫和頭文件,以此來確保 Nginx 的順利安裝。服務器
# yum -y install pcre-devel zlib-devel
建立運行用戶、組
Nginx 服務程序默認以noboby身份運行,這裏建議你們建立新的用戶帳號,更準確的控制訪問權限、增長靈活性、下降安全風險;
# useradd -M -s /sbin/nologin nginx
下載編譯安裝
配置 Nginx 的編譯選項時,將安裝目錄設爲/usr/local/nginx,運行用戶和組均設爲nginx;啓用http_stub_status_module模塊以支持狀態統計,便於查看服務器的鏈接信息。
# wget http://nginx.org/download/nginx-1.17.0.tar.gz # tar zxf nginx-1.17.0.tar.gz # cd nginx-1.17.0 # ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module # make && make install
爲主程序 Nginx 建立連接文件
# ln -s /usr/local/sbin/nginx /usr/local/sbin/ # ls -l /usr/local/sbin/nginx lrwxrwxrwx. 1 root root 21 6月 4 07:31 /usr/local/sbin/nginx -> /usr/local/sbin/nginx
安裝好以後,進入默認安裝路徑到sbin目錄下,執行nginx便可啓動;
# cd /usr/local/nginx/sbin/ # pwd /usr/local/nginx/sbin # ./nginx # nginx
監聽 Nginx 程序的狀態
# netstat -anpt | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 53816/nginx
監聽到端口後,在瀏覽器中直接訪問Nginx 地址,當瀏覽器看到以下頁面時,說明Nginx已經安裝成功了。
使用 Nginx 服務腳本
可編寫Nginx服務腳本,使用chkconfig和service工具進行統一管理;
#!/bin/bash # chkconfig: 2345 99 20 # description: Nginx Server Control Scripts shell PROG="/usr/local/nginx/sbin/nginx" PIDF="/usr/local/nginx/logs/nginx.pid" case "$1" in start) if [ -f $PIDF ]; then echo "Nginx is running.. Start it is error" else $PROG fi ;; stop) if [ -f $PIDF ]; then kill -s QUIT $(cat $PIDF) rm -rf $PIDF else echo "Nginx is stopping .. Stop it is error" fi ;; restart) $0 stop $0 start ;; reload) if [ -f $PIDF ]; then kill -s HUP $(cat $PIDF) else echo "Nginx is stopping . reload it is error" fi ;; status) if [ -f $PIDF ]; then echo "Nginx is running" else echo "Nginx is stopping" fi ;; *) echo "Usage: $0 (start|stop|restart|reload|status)" exit 1 esac exit 0 # chmod +x /etc/init.d/nginx # chkconfig --add nginx
若是修改了Nginx的配置文件,可經過./nginx -s reload命令加載Nginx配置文件。
# ./nginx -s reload
總結以上咱們介紹了Nginx的基本概念、爲何要用Nginx、Nginx 的安裝有個初步的認識,待後續的文章繼續介紹正向代理、反向代理、負載均衡以及構建 LNMP 架構等;今天咱們就介紹到這裏,有問題你們隨時留言討論哦。