Nginx使用

说明:Nginx是静态资源服务器,可以部署静态资源,并对请求进行策略分发。

下载

第一步:可在官网(http://nginx.org/en/download.html)下载,建议安装稳定版本(Stable version)

Nginx使用_第1张图片

第二步:将文件解压到一个没有中文的路径下,我这里解压到D盘x86文件夹下

Nginx使用_第2张图片

第三步:双击nginx.exe程序,会出现黑色的窗口一闪而过,在任务管理器中可以看到两个Nginx程序(只有一个表示程序启动错误,有四个或成对多于四个表示双击执行了多次nginx.exe,也会错误)

Nginx使用_第3张图片

第四步:打开浏览器,输入http://localhost/(Nginx默认端口是80,Http默认访问的端口也是80,所以不需要再指定端口号),出现Nginx的Welcome页面,表示Nginx启动成功

Nginx使用_第4张图片

使用

需要知道的是,在Nginx目录下,html文件夹内是存放静态资源文件的,conf文件夹是存放配置,log文件夹是存放日志文件的。使用Nginx部署自己的静态资源,首先把自己的项目放到html文件夹里面,后面修改Nginx的配置文件,配置访问路径。

例如,现在我有一个项目(my-project),有一个index.html静态页面和一个js文件夹,现在把它们放在Nginx的html文件夹下

Nginx使用_第5张图片

在配置文件中修改访问路径

Nginx使用_第6张图片

配置完成后需要重启以下Nginx,注意需要在Nginx.exe目录下
Nginx使用_第7张图片

配置完后,在页面输入http://localhost/,此时访问的资源就是我们部署的项目

Nginx使用_第8张图片

分发请求

在idea中创建一个Controller接口,访问链接为:http://localhost:8080/hello/

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
public class NginxController {

    @RequestMapping("/hello")
    public String hello(){
        return "Hello";
    }
}

在Nginx配置文件中配置,将请求分发到Tomcat部署的项目中来。如果链接是http://localhost/hello/,就将请求分发到:http://localhost:8080/hello(Tomcat部署的项目)
Nginx使用_第9张图片

打开浏览器,输入http://localhost/hello/

Nginx使用_第10张图片

这就是Nginx的分发请求用法,使用该方法,可以解决跨域问题(参考:http://t.csdn.cn/wioeK)

轮询

在Controller中创建下面这个方法,方法返回当前项目使用的端口号。

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
public class NginxController {

    @RequestMapping("/hello")
    public String hello(HttpServletRequest request){
        return "Hello" + request.getLocalPort();
    }
}

开启两个窗口,一个端口号为8080,一个端口号为8081
Nginx使用_第11张图片
Nginx使用_第12张图片

在Nginx配置,表示http://localhost/hello/请求路径,转发给127.0.0.1:8080/hello(即http://localhost:8080/hello)或者127.0.0.1:8081/hello(http://localhost:8081/hello),默认为轮询,即轮流访问。
Nginx使用_第13张图片

重新加载Nginx,页面输入http://localhost/hello/

Nginx使用_第14张图片

权重

在轮询的基础上,可以对反向代理的服务设置权重,权重越高,表示访问次数越多。如下,表示127.0.0.1:8080/hello、127.0.0.1:8081/hello按照2比1的比例访问
Nginx使用_第15张图片

重新加载Nginx配置,打开浏览器输入http://localhost/hello/,可看到两个反向代理的请求按比例接收

Nginx使用_第16张图片

总结

Nginx是静态资源服务器,可以将前端发送的动态请求转发到后端服务器。除了分发请求,Nginx还提供了一些分发策略,除了上面介绍的轮询、权重,还有以下策略。

ip_hash:依据ip分配方式,这样每个访客可以固定访问一个后端服务;

least_conn:依据最少连接方式,把请求优先分配给连接数少的后端服务;

url_hash:依据url分配方式,这样相同的url会被分配到同一个后端服务;

fair:据响应时间方式,响应时间短的服务将会被优先分配;

你可能感兴趣的:(nginx,运维,服务器)