Nginx 實戰-第一章 nginx 介紹與安裝部署
阿新 • • 發佈:2018-11-26
1.常見webserver介紹
1.1 常見伺服器如apache 、tomcat、jetty、jboss、netty
我們可以到這個網站(https://w3techs.com/technologies/overview/web_server/all)上面檢視每個伺服器的使用情況:
nginx發展非常快,apache還是老牌廠商。下面我們看一下這幾個比較:
Apache 和Tomcat
相同:都是HTTP伺服器 不同:apache本身只有http伺服器功能,只能處理靜態請求,如果要處理動態請求 需要配置好指令碼程式或應用程式處理,比如php或servlet容器(tomcat) tomcat兩種請求都可以處理,但是靜態請求處理慢,一般處理jsp請求 1.獨立servlet模式、預設模式,靜態請求也有tomcat完成 2.程序內servlet,用web外掛在web伺服器內部開一個jvm執行servlet容器 3.程序外servlet,用web外掛與web伺服器通訊,速度比2慢,擴充套件性好
Apache和Nginx
都是HTTP伺服器,不同在於nginx資源佔用極低、穩定性高,十分適合處理靜態請求
所以一般會用Nginx作前端伺服器,處理高併發的靜態請求
Apache負責後臺,轉發php、cgi、perl等動態解析
Tomcat和jetty
相同:都是servlet容器和http伺服器,核心都一樣
不同:jetty更加輕量,而且支援jsp、.net和php全系列
jboss、tomcat、jetty
jboss是一個EJB容器,通常集成了tomcat或jetty負責servlet請求
總結
一般Web請求用apache、nginx或lighttpd中的一種 servlet容器用tomcat或jetty Ejb容器用jboss
2.nginx官網和版本介紹
- Nginx誕生 2004年10月釋出,俄國人Igor Sysoev開發,
- rambler.ru Nginx官網、版本 nginx.org 1.14.0穩定版 國內分支Tengine(http://tengine.taobao.org/)
3.nginx功能介紹
Nginx功能介紹 Http服務、反向代理、負載均衡、郵件代理、快取加速、SSL、flv/mp4流媒體
- 正向代理:某些情況下,代理我們使用者去訪問伺服器,需要使用者手動的設定代理伺服器的ip和埠號。
- 反向代理:是用來代理伺服器的,代理我們要訪問的目標伺服器。代理伺服器接受請求,然後將請求轉發給內部網路的伺服器(叢集化),並將從伺服器上得到的結果返回給客戶端,此時代理伺服器對外就表現為一個伺服器。Nginx在反向代理上,提供靈活的功能,可以根據不同的正則採用不同的轉發策略。
- 負載均衡:多在高併發情況下需要使用。其原理就是將資料流量分攤到多個伺服器執行,減輕每臺伺服器的壓力,多臺伺服器(叢集)共同完成工作任務,從而提高了資料的吞吐量。Nginx可使用的負載均衡策略有:輪詢(預設)、權重、ip_hash、url_hash(第三方)、fair(第三方)
- Nginx提供的動靜分離是指把動態請求和靜態請求分離開,合適的伺服器處理相應的請求,使整個伺服器系統的效能、效率更高。Nginx可以根據配置對不同的請求做不同轉發,這是動態分離的基礎。靜態請求對應的靜態資源可以直接放在Nginx上做緩衝,更好的做法是放在相應的緩衝伺服器上。動態請求由相應的後端伺服器處理。
4.nginx安裝和部署
4.1 Nginx安裝 – yum安裝
- vi /etc/yum.repos.d/nginx.repo
- https://coding.net/u/aminglinux/p/nginx/git/blob/master/2z/nginx.repo
- yum install -y nginx systemctl start/stop/restart/reload
- nginx 測試:瀏覽器訪問或者curl訪問 檢查服務程序:ps aux |grep nginx 檢查埠監聽:netstat -lnp |grep ‘:80’ 有防火牆,
- 需加規則iptables -I INPUT -p tcp --dport 80 -j ACCEPT
- nginx -V檢視版本以及各個目錄、引數
4.2 Nginx安裝 – 原始碼安裝
4.2.1 nginx原始碼安裝
下面是一個簡單的安裝過程,具體過程我就不演示了,這個應該不會太難。
- wget http://nginx.org/download/nginx-1.14.0.
- tar.gz tar zxf nginx-1.14.0.tar.gz
- cd nginx-1.14.0;
- ./configure --prefix=/usr/local/nginx
- make && make install
4.2.2 nginx 啟動與停止
/usr/local/nginx/sbin/nginx //啟動
pkill nginx //殺死nginx程序,停止nginx服務
/usr/local/nginx/sbin/nginx -t //檢測配置檔案語法錯誤
/usr/local/nginx/sbin/nginx -s reload//過載配置
4.3 服務管理指令碼
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start()
{
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop()
{
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload()
{
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart()
{
stop
start
}
configtest()
{
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload|restart|configtest}"
RETVAL=1
esac
exit $RETVAL