Nginx介绍
Nginx最多的应该是以Web服务器的形式进入大众的视野,我们经常做的便是把Nginx服务器和Apache服务器放在一起对比。性能上,Nginx绝对是可以作为Apache服务器的代替,并且比Apache服务器更加优秀。从我接触过的Web服务器种类,只要是Linux系统的(Windows服务器基本上选择IIS,Nginx更多用来做代理),Nginx肯定是被用来处理静态文件的不二选择。下面介绍几种Nginx常用的功能。
一、Nginx作为Web服务器
Nginx作为Web服务器多用来处理静态请求,比如页面样式、图片等。一般作为Web服务器,配置也比较简单,所以被广泛用于实际的项目中。
二、Nginx作为代理服务器
Nginx作为代理服务器分正向代理和反向代理。正向代理是客户端通过代理的服务器去请求服务端,对服务器端而言,请求的客户端是透明的;反向代理,是客户端请求统一的代理机器,然后代理机器把请求发送给后面的实际服务端,对客户端而言,后面实际提供服务的服务端是透明的。正向代理之前遇到过Squid去做的,主要是用来解决网络限制的情况;科学上网也是用正向代理的。在这里我们只讨论反向代理。
三、Nginx作为负载均衡器
负载均衡器是为了均衡Web服务器的流量压力,通过横向的拓展Web服务器保证服务在请求数激增的情况下,Web服务器不会压力过大而出现响应不及时、超时甚至页面崩溃。常见用来做硬件的负载均衡的是F5,软件的实现方案比较多:DNS负载均衡、LVS、Nginx。Nginx做负载均衡器其实用到的就是上面提到的反向代理。一个比较常见的负载均衡的方案就是通过DNS把访问域名解析到多台Nginx代理服务器上,每台Nginx服务器再去反向代理到实际的Web服务器。这样做,代理服务器和Web服务器都不是单点,保证了WEB的高可用。
以上提到Nginx常见的用法中,都是在Nginx的配置文件中体现。
N
ginx服务器安装与配置
1.安装
Nginx的安装可以通过yum或者源码包,这里介绍下源码包的安装。可以在官网(nginx.org)下载对应的安装包,然后编译安装即可。Nginx在安装过程中会有比较多的依赖,在编译的时候,编译参数的选择也安装自己实际情况添加。一种比较投机的做法是去线上Nginx服务器上查看下它的编译参数。比如Nginx安装目录是/opt,那么可以通过/opt/nginx/sbin/nginx -V查看到编译参数,直接安装这个参数编译即可。编译过程中遇到依赖库的报错,一个一个处理就行了。
2.配置
Nginx的配置文件nginx.conf在安装目录的conf文件夹下。作为Web服务器,配置Nginx的部分主要在server{ }标签下。Nginx Web服务器可以基于域名配置、基于主机配置,这些配置方法在网上有很多的示例。关于配置的规则,有的是把单个域名下多个网站的配置独立开,在nginx.conf中添加 include /opt/nginx/conf/conf.d/\*.conf; 这种模式。
3.常见命令
Nginx的启动 /opt/nginx/sbin/nginx
Nginx平滑启动 /opt/nginx/sbin/nginx -s reload
Nginx语法检查 /opt/nginx/sbin/nginx -t
上面三个命令是在Nginx服务器调整过程中经常使用的命令。在修改了Nginx的配置文件之后,最合适的做法是通过-t参数对语法进行检查,再确认无误之后再平滑启动Nginx。Nginx平滑启动的意思是不改变父进程的情况下,让父进程去用新的子进程去替换旧的子进程,从而达到重启Nginx的效果。
N
ginx代理服务器和负载均衡
代理的配置在Nginx的upsteam.conf文件中,类似
upstream group_name {
server 192.168.0.1:80 weight=5;
server 192.168.0.2:80 weight=10;
}
以上介绍的是Nginx常用的,可能有点粗糙,也没贴出详细的配置文件。具体的可以各自参考在项目中的配置文件,或者在网上看案例,我这里只是把常用的点说了下。显然我懒的去复制项目中的配置,大家当是个入门就好。
ps:可以阅读张宴的《实战Nginx:取代Apache的高性能Web服务器》