nginx

Nginx
主要内容

  1. Nginx简介
  2. 代理方式
  3. 安装Nginx
  4. 操作Nginx
  5. Ngixn的使用
    学习目标
    知识点 要求
    Redis简介 了解
    代理方式 掌握
    安装Nginx 掌握
    操作Nginx 掌握
    Ngixn的使用 掌握
    顺口溜来了!~~~~~~

一、 Nginx简介
1 Nginx简介
Nginx (engine x) 是一个高性能的HTTP和反向代理服务。Nginx是由伊戈尔•赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。
2 Nginx作用
2.1 http协议代理
2.2 搭建虚拟主机
2.3 服务的反向代理
2.4 在反向代理中配置集群的负载均衡
二、 代理方式
1 正向代理
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

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

3 二者之间的区别
位置不同
正向代理,架设在客户机和目标主机之间;
反向代理,架设在服务器端;
代理对象不同
正向代理,代理客户端,服务端不知道实际发起请求的客户端;
反向代理,代理服务端,客户端不知道实际提供服务的服务端;

三、 安装Nginx
1 将Nginx安装包上传到Linux中
使用的Nginx版本为nginx-1.8.0.tar.gz
2 nginx安装环境
nginx是C语言开发,建议在linux上运行,本视频使用Centos6.5作为安装环境。
 gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装yum -y install gcc automake autoconf libtool make
 PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
 zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel

 openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
3 编译安装
解压:tar -zxvf nginx-1.8.0.tar.gz

进入到nginx的根目录
cd nginx-1.8.0

3.1 配置安装参数
./configure

参数设置如下:
./configure
–prefix=/usr/local/nginx
–pid-path=/var/run/nginx/nginx.pid
–lock-path=/var/lock/nginx.lock
–error-log-path=/var/log/nginx/error.log
–http-log-path=/var/log/nginx/access.log
–with-http_gzip_static_module
–http-client-body-temp-path=/var/temp/nginx/client
–http-proxy-temp-path=/var/temp/nginx/proxy
–http-fastcgi-temp-path=/var/temp/nginx/fastcgi
–http-uwsgi-temp-path=/var/temp/nginx/uwsgi
–http-scgi-temp-path=/var/temp/nginx/scgi

注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录

3.2 编译安装
编译:make
编译安装make install
四、 操作Nginx
1 启动nginx
cd /usr/local/nginx/sbin/
./nginx
注意:执行./nginx启动nginx,这里可以-c指定加载的nginx配置文件,如下:
./nginx -c /usr/local/nginx/conf/nginx.conf
如果不指定-c,nginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(–conf-path= 指向配置文件(nginx.conf))
2 停止nginx
方式1,快速停止:
cd /usr/local/nginx/sbin
./nginx -s stop
此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

方式2,完整停止(建议使用):
cd /usr/local/nginx/sbin
./nginx -s quit
此方式停止步骤是待nginx进程处理任务完毕进行停止。

3 重启nginx
方式1,先停止再启动(建议使用):
对nginx进行重启相当于先停止nginx再启动nginx,即先执行停止命令再执行启动命令。
如下:
./nginx -s quit
./nginx

方式2,重新加载配置文件:
当nginx的配置文件nginx.conf修改后,要想让配置生效需要重启nginx,使用-s reload不用先停止nginx再启动nginx即可将配置信息在nginx中生效,如下:
./nginx -s reload
4 测试
nginx安装成功,启动nginx,即可访问虚拟机上的nginx
Nginx默认的是侦听80端口

五、 Nginx的使用
1 配置虚拟主机
1.1 虚拟主机介绍
虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的。
虚拟主机技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于HTTP(Hypertext Transfer Protocol,超文本传输协议)服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。

1.2 Nginx的虚拟主机配置方式
Nginx支持三种类型的虚拟主机配置

  1. 基于IP的虚拟主机
  2. 基于端口的虚拟主机
  3. 基于域名的虚拟主机
    1.2.1 基于IP的虚拟主机配置方式
    1.2.1.1 需求
    一台Linux服务器绑定两个ip:192.168.70.144、192.168.70.188
    访问不同的ip请求不同的html目录,即:
    访问http://192.168.70.144将访问“html144”目录下的html网页
    访问http://192.168.70.188将访问“html188”目录下的html网页
    1.2.1.2 创建HTML目录

1.2.1.3 Linux绑定多IP
Linux操作系统允许绑定多IP。使用IP别名的方式,在一块物理网卡上可以绑定多个lP地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。但是在绑定多IP时需要将动态的IP分配方式修改为静态的指定IP
1.2.1.3.1 将动态IP修改为静态IP
cd /etc/sysconfig/network-scripts
IPADDR=192.168.10.144
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
DNS1=114.114.114.114
1.2.1.3.2 IP绑定
将/etc/sysconfig/network-scripts/ifcfg-eth0文件复制一份,命名为ifcfg-eth0:1
修改其中内容:
DEVICE=eth0:1
IPADDR=192.168.70.188
其他项不用修改
重启系统
1.2.1.4 修改Nginx的配置文件完成基于IP的虚拟主机配置

Nginx的配置文件nginx.conf

如上述配置文件所示,主要由6个部分组成:
main:用于进行nginx全局信息的配置
events:用于nginx工作模式的配置
http:用于进行http协议信息的一些配置
server:用于进行服务器访问信息的配置
location:用于进行访问路由的配置
upstream:用于进行负载均衡的配置

Nginx.conf

user root;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;

#一个Server就是一个虚拟主机
server {
    listen       80;
#为虚拟机指定IP或者是域名
    server_name  192.168.70.144;

#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        root   html144;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

#一个Server就是一个虚拟主机
server {
    listen       80;
#为虚拟机指定IP或者是域名
    server_name  192.168.70.188;

#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        root   html188;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

}

1.2.2 基于端口的虚拟主机配置方式
1.2.2.1 需求
Nginx对提供8080与9090两个端口的监听服务
请求8080端口则访问html8080目录下的index.html
请求9090端口则访问html9090目录下的index.html

1.2.2.2 创建HTML目录

1.2.2.3 修改Nginx的配置文件完成基于端口的虚拟主机配置
Nginx.conf

user root;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;

#一个Server就是一个虚拟主机
server {
    listen       80;
#为虚拟机指定IP或者是域名
    server_name  192.168.70.144;

#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        root   html144;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

#一个Server就是一个虚拟主机
server {
    listen       80;
#为虚拟机指定IP或者是域名
    server_name  192.168.70.188;

#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        root   html188;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

 #一个Server就是一个虚拟主机 基于端口
server {
    listen       8080;
#为虚拟机指定IP或者是域名
    server_name  192.168.70.188;

#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        root   html8080;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

 #一个Server就是一个虚拟主机
server {
    listen       9090;
#为虚拟机指定IP或者是域名
    server_name  192.168.70.188;

#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        root   html9090;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

}

1.2.3 基于域名的虚拟主机配置方式
1.2.3.1 需求
两个域名指向同一个nginx服务器,用户访问不同的域名时显示不同的内容。
域名规划:
1, www.bjsxt.com
2, www.itbaizhan.cn
1.2.3.2 创建HTML目录

1.2.3.3 修改windows的hosts文件配置域名与ip的映射
文件路径:C:\Windows\System32\drivers\etc

1.2.3.4 修改Nginx的配置文件完成基于域名的虚拟主机配置

nginx.conf
server {
listen 80;
#为虚拟机指定IP或者是域名
server_name test.bjsxt.com;

#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        root   html-bjsxt;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

 #一个Server就是一个虚拟主机
server {
    listen       80;
#为虚拟机指定IP或者是域名
    server_name  test.itbaizhan.cn;

#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        root   html-itbaizhan;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

2 Nginx中配置服务的反向代理
2.1 需求
安装两个tomcat服务,通过nginx反向代理。
本案例中使用两台虚拟机演示。
tomcat安装到192.168.70.143环境中。端口为8080与9090
Nginx安装在192.168.70.144环境中
2.2 安装环境
2.3 安装tomcat

2.4 配置tomcat
2.4.1 修改端口

2.4.2 修改首页内容

2.5 配置Nginx实现服务的反向代理
nginx.conf

user root;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile        on;
keepalive_timeout  65;



upstream tomcat_server1{
server 192.168.70.143:8080;
}

upstream tomcat_server2{
server 192.168.70.143:9090;
}

server {
    listen       80;
#为虚拟机指定IP或者是域名
    server_name  test.bjsxt.com;

#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        proxy_pass  http://tomcat_server1;

    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

 #一个Server就是一个虚拟主机
server {
    listen       80;
#为虚拟机指定IP或者是域名
    server_name  test.itbaizhan.cn;

#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        proxy_pass  http://tomcat_server2;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

}

2.6 在反向代理中配置负载均衡
2.6.1 什么是负载均衡
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
2.6.2 Nginx负载均衡策略
2.6.2.1 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2.6.2.2 指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
2.6.2.3 IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

2.6.3 需求
nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至tomcat服务器。
nginx负载均衡服务器:192.168.70.144
tomcat1服务器:192.168.70.143:8080
tomcat2服务器:192.168.70.143:9090

2.6.4 Nginx的集群配置
节点说明:
在http节点里添加:

#定义负载均衡设备的 Ip及设备状态
upstream myServer {

server 127.0.0.1:9090 down; 
server 127.0.0.1:8080 weight=2; 
server 127.0.0.1:6060; 
server 127.0.0.1:7070 backup; 

}

在需要使用负载的Server节点下添加

proxy_pass http://myServer;

upstream 每个设备的状态:

down 表示单前的server暂时不参与负载
weight 默认为1.weight越大,负载的权重就越大
fail_timeout:次失败后,暂停的时间 默认10s
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

nginx.conf

user root;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile        on;
keepalive_timeout  65;



upstream tomcat_server1{
server 192.168.70.143:8080 weight=10;
server 192.168.70.143:9090 weight=2;
}


server {
    listen       80;
#为虚拟机指定IP或者是域名
    server_name  test.bjsxt.com;

#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        proxy_pass  http://tomcat_server1;

    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值