高性能Nginx服务器-反向代理

Nginx

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。

Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.

作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。

Nginx一般用户七层负载均衡,其吞吐量有一定的限制。为了提高整体的吞吐量,会在DNS和Nginx之间引入LVS(软件负载均衡器)、F5(硬负载均衡器) 可以做四层负载均衡,首先DNS解析到LVS(F5),让后LVS(F5)转发给Nginx,在有Nginx转发给真实的服务器

Nginx基本安装

Windows安装Nginx

解压:nginx-windows

双击: nginx.exe

能看到nginx欢迎界面说明,nginx安装成功

演示下 nginx做静态服务器

Linux安装Nginx

1.安装gcc gcc-c++(如新环境,未安装请先安装)

$ yum install -y gcc gcc-c++

2.安装wget

$ yum -y install wget

3.安装PCRE库

$ cd /usr/local/

$ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz

$ tar -zxvf pcre-8.33.tar.gz

$ cd pcre-8.33

$ ./configure

$ make && make install

如果报错:

在 linux 中执行 wget 命令提示 -bash: wget: command not found 解决方法

解决办法 yum -y install wget

5.安装SSL库

$ cd /usr/local/

$ wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz

$ tar -zxvf openssl-1.0.1j.tar.gz

$ cd openssl-1.0.1j

$ ./config

$ make && make install

6.安装zlib库存

$ cd /usr/local/

$ wget http://zlib.net/zlib-1.2.11.tar.gz

$ tar -zxvf zlib-1.2.11.tar.gz

$ ./configure

$ make && make install

5.安装nginx

$ cd /usr/local/

$ wget http://nginx.org/download/nginx-1.8.0.tar.gz

$ tar -zxvf nginx-1.8.0.tar.gz

$ cd nginx-1.8.0

$ ./configure

$ make && make install

6.安装nginx

/usr/local/nginx/sbin/nginx

Nginx应用场景

1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

2、虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。

3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。

4、nginz 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

Nginx目录结构

Nginx-

|_ conf 配置目录

|_ contrib

|_ docs 文档目录

|_ logs 日志目录

|_ temp 临时文件目录

|_ html 静态页面目录

|_ nginx.exe 主程序

Nginx静态资源

静态资源访问 存放在nginx的html页面

Nginx虚拟主机配置

1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站

2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台

3、基于ip的虚拟主机,几乎不用。

基于虚拟主机配置域名

实现步骤:

需要建立/data/www /data/bbs目录,windows本地hosts添加虚拟机ip地址对应的域名解析;对应域名网站目录下新增index.html文件;

#当客户端访问www.itmayiedu.com,监听端口号为80,直接跳转到data/www目录下文件

server {

listen 80;

server_name www.itmayiedu.com;

location / {

root data/www;

index index.html index.htm;

}

}

#当客户端访问www.itmayiedu.com,监听端口号为80,直接跳转到data/bbs目录下文件

server {

listen 80;

server_name bbs.itmayiedu.com;

location / {

root data/bbs;

index index.html index.htm;

}

}

基于端口的虚拟主机

使用端口来区分,浏览器使用域名或ip地址:端口号 访问

#当客户端访问www.itmayiedu.com,监听端口号为8080,直接跳转到data/www目录下文件

server {

listen 8080;

server_name 8080.itmayiedu.com;

location / {

root data/www;

index index.html index.htm;

}

}

#当客户端访问www.itmayiedu.com,监听端口号为8081,直接跳转到data/bbs目录下文件

server {

listen 8081;

server_name 8081.itmayiedu.com;

location / {

root data/bbs;

index index.html index.htm;

}

}

Nginx配置反向代理

反向代理的作用

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

启动一个Tomcat 127.0.0.1:8080

使用nginx反向代理 8080.itmayiedu.com 直接跳转到127.0.0.1:8080

反向代理的好处

反向代理的好处隐藏真实内部ip地址,请求先访问nginx代理服务器(外网可以访问到),在使用nginx服务器转发到真实服务器中。

反向代理的配置

###当客户端访问www.itmayiedu.com,监听端口号为80直接跳转到真实ip服务器地址 127.0.0.1:8080

server {

listen 80;

server_name www.itmayiedu.com;

location / {

proxy_pass http://127.0.0.1:8080;

index index.html index.htm;

}

}

###当客户端访问www.itmayiedu.com,监听端口号为80直接跳转到真实ip服务器地址 127.0.0.1:8081

server {

listen 80;

server_name 8081.itmayiedu.com;

location / {

proxy_pass http://127.0.0.1:8081;

index index.html index.htm;

}

}