Nginx 详解
一、简单介绍一下Nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。Nginx 主要提供反向代理、负载均衡、动静分离(静态资源服务)等服务。下面简单地来介绍一下。
正向代理和反向代理
正向代理:某些情况下,代理我们用户去访问服务器,需要用户手动的设置代理服务器的ip和端口号。正向代理比较常见的一个例子就是 VPN了。
正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求
反向代理: 是用来代理服务器的,代理我们要访问的目标服务器。代理服务器接受请求,然后将请求转发给内部网络的服务器,并将从服务器上得到的结果返回给客户端,此时代理服务器对外就表现为一个服务器。
客户不知道真正提供服务人的是谁。反向代理隐藏了真实的服务端,当我们请求一个www.baidu.com的时候,背后可能有成千上万台服务器为我们服务,你不需要知道具体是哪一台,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。Nginx就是性能非常好的反向代理服务器,用来做负载均衡。
两者的区别在于代理的对象不一样: 正向代理是为客户端代理,反向代理是为服务端代理。
负载均衡
在高并发情况下需要使用,其原理就是将并发请求分摊到多个服务器执行,减轻每台服务器的压力,多台服务器(集群)共同完成工作任务,从而提高了数据的吞吐量。
负载均衡相比于反向代理更侧重的时将请求分担到多台服务器上去,所以负载均衡只有在提供某服务的服务器大于两台时才有意义。
动静分离
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,就可以根据静态资源的特点将其做缓存操作。
二、为什么要用 Nginx ?
Nginx 有以下5个优点:
- 高并发、高性能
- 扩展性好
- 高可靠性
- 热部署
- BSD许可证(开源协议)
三、Nginx 的四个主要组成部分
- Nginx 二进制可执行文件:由各模块源码编译出一个文件
- nginx.conf 配置文件:控制Nginx 行为
- access.log 访问日志: 记录每一条HTTP请求信息
- error.log 错误日志:定位问题
四、Nginx的配置:
1.配置jdk
1.解压tar包
2.配置环境变量(为后面tomcat做准备)
vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
3.生效配置文件 并进行测试
生效配置文件:
source /etc/profile
4.测试是否成功:
[root@hadoop ~]# java -version
java version "1.7.0_67"
2.下载Nginx的tar包并解压 http://nginx.org
3.安装模块依赖库
yum install pcre*
yum install openssl*
yum install zlib*
4.到安装目录下执行
./configure --prefix=/usr/local/nginx
5.编译
Nginx make & make install
6.开放80端口
vi /etc/sysconfig/iptables
service iptables restart //最后重启防火墙使配置生效
7.启动Nginx
在安装目录下执行sbin/nginx
8.访问Nginx http:// IP:端口号
常用命令
启动:sbin/nginx
停止:sbin/nginx -s stop
重启:sbin/nginx –s reload
检查配置文件(nginx.conf)是否合法: sbin/nginx –t
nginx.conf配置文件
Nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)和 location(URL匹配特定位置后的设置),每部分包含若干个指令。main部分设置的指令将影响其它所有部分的设置;server部分的指令主要用于指定虚拟主机域名、IP和端口;upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;location部分用于匹配网页位置(比如,根目录“/”,“/images”,等等)。他们之间的关系式:server继承main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。
//负载均衡
upstream itripbiz_server {
server 127.0.0.1:8081;
server 127.0.0.1:8080;
}
//反向代理
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://itripbiz_server;
}
五、Nginx配置文件的整体结构主要包含以下几大部分内容:
全局块
该部分配置主要影响Nginx全局,通常包括下面几个部分:
配置运行Nginx服务器用户(组)
worker process数
Nginx进程PID存放路径
错误日志的存放路径
配置文件的引入
events块
该部分配置主要影响Nginx服务器与用户的网络连接,主要包括:
设置网络连接的序列化
是否允许同时接收多个网络连接
事件驱动模型的选择
最大连接数的配置
http块
定义MIMI-Type
自定义服务日志
允许sendfile方式传输文件
连接超时时间
单连接请求数上限
server块
配置网络监听
基于名称的虚拟主机配置
基于IP的虚拟主机配置
location块
location配置
请求根目录配置
更改location的URI
网站默认首页配置