Nginx02 -- 配置文件_fengxianaa的博客-CSDN博客
Nginx提供代理转发功能,做动静分离,使用proxy_pass配置
创建一个普通的Maven项目
1. pom.xml
org.springframework.boot
spring-boot-starter-parent
2.3.6.RELEASE
org.springframework.boot
spring-boot-starter-web
2. Application
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
3. Controller
@RestController
public class NginxController {
@GetMapping("hello")
public String hello(){
return "Hello Nginx!!!";
}
}
切换到 /home/nginx 目录,复制一个配置文件
内容如下
server {
#监听端口
listen 80;
#域名
server_name yase.cn;
location / {
#站点根目录,静态资源都可以放到这里
root /home/web/yase;
#首页
index yase.html;
}
location /hello {
proxy_pass http://192.168.56.1:8080;
}
}
注意:使用 nginx -t、nginx -s reload 校验
重新加载配置文件、启动项目后,浏览器访问:http://yase.cn/hello
原理解释:
使用proxy_pass时,有好几种情况,不同的配置会转发到不同的路径
端口号后有“/”,请求是:http://192.168.56.113/ng/hello,会转发到:http://192.168.56.1:8080/hello
好处:后端接口不对外暴露
端口号后没有“/”,请求是:http://192.168.56.113/ng/hello,会转发到:http://192.168.56.1:8080/ng/hello
在 DispatcherServlet 的 doDispatch 方法中打断点可以看到请求到后端的路径
请求是:http://192.168.56.113/ng/hello,会转发到:http://192.168.56.1:8080/yase/hello
比第三种最后少了一个“/”
请求是:http://192.168.56.113/ng/hello,会转发到:http://192.168.56.1:8080/yasehello
端口号后有“/”,请求是:http://192.168.56.113/ng/hello,会转发到:http://192.168.56.1:8080//hello
端口号后有“/”,请求是:http://192.168.56.113/ng/hello,会转发到:http://192.168.56.1:8080/ng/hello
一般建议配置如下
还是修改 yase.conf
# 新增 upstream 配置,名称是:yase
upstream yase {
server 192.168.56.1:8080;
server 192.168.56.1:8888;
}
server {
#监听端口
listen 80;
#域名
server_name yase.cn;
#编码识别
#charset koi8-r;
#日志格式及日志存放路径
#access_log logs/host.access.log main;
#location 用于匹配请求路径
location / {
# 设置请求转发的 yase
proxy_pass http://yase/;
}
#错误页面
#error_page 404 /404.html;
}
注意:使用 nginx -t、nginx -s reload 校验
浏览器访问结果:8080和8888交替出现
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能自动剔除掉。
上面快速体验就是轮训策略
使用weight,代表权重,默认为1,权重越高被分配的客户请求就越多
上图:一同访问 6 次,8888被分配 4 次,8080被分配 2 次
使用场景:两天服务器性能不一样,性能高的就权重高
生产环境不用,只做了解、测试
请求按访问 IP 的 hash 值分配,这样每个访客固定访问一个后端服务器
表示某个机器下线,不参与负载均衡
这时候再访问,就只能分配给8888
表示备用主机,其他机器都不能用了,请求才会分配给他
上图:请求只会分配给 8080
上图:请求只会分配给备用主机 8888