Nginx 实战-第一章 nginx 介绍与安装部署
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