一. 部署静态资源

Nginx可以作为静态web服务器来部署静态资源。静态资源是指在服务端真实存在并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。相对于Tomcat,Nginx处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到Nginx中。

将静态资源部署到Nginx:只需要将文件上传到Nginx安装目录下的html目录中即可。

例如:将hello.html页面放到nginx的html目录中,之后可以通过访问 ip/hello.html来访问该页面

可以通过修改nginx的配置文件nginx.conf的以下信息:(1)例如修改端口号80为81,则访问路径变为ip:81/hello.html;(2)例如修改默认首页为hello.html,则访问路径为ip

server {
    listen 80;     #监听端口 
    server_name localhost;   #服务器名称
    location /{      #匹配客户端请求url 
        root html;   #指定静态资源根目录 
        index index.html;   #指定默认首页
    }
}

二. 反向代理

正向代理:(1)是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。(2)正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。(3)正向代理的用途是为在防火墙内的局域网客户端提供访问Internet的途径。

反向代理:(1)反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。用户不需要知道目标服务器的地址,也无须在用户端作任何设定。

举例:开启一个linux系统下部署好的java项目(ip为192.168.32.128),开启nginx服务器(ip为192.168.32.129),本来可以直接通过访问http://192.168.32.128:8080/来访问java项目,现在需要通过反向代理,即通过nginx服务器来访问java项目,即通过访问http://192.168.32.129:82/来访问java项目

修改nginx的配置文件nginx.conf来配置反向代理,将以下代码复制到nginx.conf的http块中

server{ 
    listen 82;
    server_name localhost; 
    location / {
        proxy_pass http://192.168.32.128:8080;   #反向代理配置,将请求转发到指定服务
    }
}

三. 负载均衡

早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群进行性能的水平扩展以及避免单点故障出现。

应用集群:将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据

负载均衡器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理。

配置负载均衡:

upstream targetserver{                    #upstream指令可以定义一组服务器      
    server 192.168.32.128:8080;  
    server 192.168.32.128:8081;
}

server{
    listen 8080; 
    server_name localhost;
    location / {
        proxy_pass http://targetserver;
    }
}

代理服务器会将请求分发到http://192.168.32.128:8080/或http://192.168.32.128:8081/

负载均衡策略

轮询

默认方式

weight

权重方式

ip_hash

依据ip分配方式

least_conn

依据最少连接方式

url_hash

依据url分配方式

fair

依据响应时间方式