nginx反向代理tomcat

nginx反向代理tomcat

本文由个人总结,如需转载使用请标明原著及原文地址

首先你要有tomcat和nginx
没有装tomcat的点这里!!!!!
没有装nginx的点这里!!!!!!
nginx反向代理tomcat其实很简单只需要修改nginx的配置文件就行了
nginx配置文件在/usr/loacl/nginx/conf/nginx.conf
有图形化界面的可以直接打开修改,没图形化界面的用vim命令打开修改

在server上方加入upstream
在这里插入图片描述
完整代码结构如下

   upstream Demo_server{
		ip_hash;#将相同ip的请求发送到同个server上
		server 127.0.0.1:8080;
		#配置多个,实现轮询,将多个前端请求自动分配到多个server上
		#server 127.0.0.1:8082 backup;#热备,作为备份,主server宕机后自动转发到热备server
		#server 127.0.0.1:8082 weight=2;#权重模式,优先使用级别
	}
    server {
        listen       80;
        server_name www.hostname.cn;
		root /data;#前端静态工程
		index index.html;
	 	location / {
				proxy_set_header Host $host;
				proxy_set_header X-Real-IP $remote_addr;
				proxy_pass http://Demo_server;#反向代理地址
	        }
		location ~ .*\.(gif|jpg|png|html|mp3){
			expires 6h;
		}
		location ~ .*\.(js|css){
			expires 2h;
		}
		access_log /data/logs/nginx/app_access.log;
    }

1.upstream中主要是部署反向代理的服务器,服务器可以是多个也可以是单个
配置多个服务器能够实现负载均衡,所有服务器被使用到的机率都相同,避免单一服务器访问量过大产生问题

upstream Demo_server{
		server 127.0.0.1:8080;
		server 127.0.0.1:8081;
		server 127.0.0.1:8082;
		#配置多个,实现轮询,将多个前端请求自动分配到多个server上
	}

如果是有资金来往的网站,为了避免用户刷新使得订单提交到多个服务器上的情况可以在upstream中加入 ip_hash,目的是同个ip发出的请求只由单个服务器处理

upstream itripbiz_server{
		ip_hash;#将相同ip的请求发送到同个server上
		server 127.0.0.1:8080;
	}

配置的server后面可以加上backup,weight关键词
backup的作用是将该服务器作为一个热备服务器,平时不使用,仅当主服务器出现问题宕机后使用

upstream itripbiz_server{
		server 127.0.0.1:8080;
		server 127.0.0.1:8082 backup;
		#热备,作为备份,主server宕机后自动转发到热备server
	}

weight是权重的意识,也就是服务器被使用的优先级,因为有的时候,公司有多台服务器,有的性能比较好,有的性能比较差,那么我们能让性能好的多处理些请求,就可以用到weight

upstream itripbiz_server{
		server 127.0.0.1:8080;
		server 127.0.0.1:8082 weight=2;#权重模式,优先使用级别
	}

像这样 8082端口的server被用到的概率就会大于8080端口的server,但是这仅仅是概率上的问题,即使把权重设的很大,其他服务器依旧能分配到请求,这方面知识可以参考CPU分配时间片的原理

2.upstream说完后,我们接下来说下server
nginx.conf中的server就是一个拦截器,他能够监听并拦截你指定端口的请求

关键词 作用
listen 是监听的端口
server_name 是访问的域名,例如127.0.0.1与localhost的关系
root 这是设置静态页面存放的路径
index 默认主页
location 根据后面的匹配规则进行拦截
access_log 配置日志存放路径

拦截所有的请求,然后发送到tomcat上
要注意,第三条的名字要和之前配置的upstream的名字相同

location / {
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_pass http://Demo_server;#反向代理地址
      }

然后可以验证下conf文件语法是否正确使用以下命令

/usr/local/nginx/sbin/nginx -t	

在这里插入图片描述
我这第一次验证conf文件时报错,原因是我指定的日志文件夹不存在,所以我用mkdir -p 创建了文件夹,之后再进行验证就显示successful了

3.重启nginx

/usr/local/nginx/sbin/nginx -s reload

然后就可以通过nginx访问tomcat了(tomcat要记得开)

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章