ngnix配置反向代理

下图是我们要设计的服务器集群结构,所有的请求都经过Nginx,如果是静态资源的请求,则直接访问Ngnix的本地磁盘(或者NAS),其余的动态资源请求均由Nginx转发到后端服务器。
在这里插入图片描述

OpenResty安装

Nginx官网提供源码,选择想要加载的模块,下载后需要手动编译。如果要增删模块,需要在编译阶段指定,比较复杂。推荐直接使用OpenResty框架,该框架已经将Nginx和LuaJIT的相关配置打包,且集成了大部分Nginx常用特性,比如反向代理、Redis等。
参考官网文档:
https://openresty.org/en/installation.html
按上述文档操作后,OpenResty会安装在/usr/local/openresty目录下。该目录下nginx/conf目录存放Ngnix的所有配置;ngnix/html目录放置Ngnix的html文件。

启动nginx

在/usr/local/openresty/nginx目录下,执行

sbin/nginx -c conf/nginx.conf

默认是后台加载启动的方式,会启动在conf/nginx.conf指定的端口。此时就可以通过浏览器访问了,可以看到Welcome to OpenResty页面。

按照我们之前的架构部署,当请求静态资源时,路由到本地磁盘路径;其余的所有请求都使用动态代理,访问后端server。

部署前端资源

打包前端资源上传到服务器。进入nginx目录下的html下,然后新建resources目录用于存放前端静态资源。
默认配置中,Ngnix会将所有路径的访问都转发到html路径。我们需要修改conf/nginx.conf,设置指向resources目录下的location可以访问对应的html下的静态资源文件。
将server中

location / {
	root html;
	index index.html index.htm
}

修改为

location /resources/ {
	alias /usr/local/openresty/nginx/html/resources/;
	index index.html index.htm
}

至此,我们的静态资源访问可以指向Ngnix对应的路径。

配置反向代理

修改conf/nginx.conf,设置upstream server,指定后端服务器的地址。
我的两台服务器地址分别为172.22.97.43、172.22.97.42。weight代表权重,我现在配置的轮循比例为1:1。

upstream backend_server {
    server 172.22.97.43 weight=1;
    server 172.22.97.42 weight=1;
}

刚才我们指定了静态资源的路由路径,除此之外所有请求我们都当做动态资源,在server中增加

location / {
    proxy_pass http://backend_server;
    proxy_set_header Host $http_host:$proxy_port;
    proxy_set_header X-Real_IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

开启tomcat access log

为了确保Nginx确实访问到了后端server,我们可以查看后端server的Tomcat日志。只需要在SpringBoot项目的配置文件中添加相关配置。在线上环境中,修改外挂配置文件即可。

server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.directory=/var/www/project/tomcat  ## 你的项目目录中新增/tomcat
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D

需要注意的配置

  1. 前端接入的超时时间一般需要大于反响代理的服务超时时间,因为数据流是通过nginx转发,若前端超时时间小于后端超时时间则会出现后端服务还未超时,前端就超时的情况。
  2. 配置长连接keepalive以解决网络建连的问题,提高路由性能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章