nginx反向代理tomcat
本文由个人总结,如需转载使用请标明原著及原文地址
首先你要有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
关键词 | 作用 |
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要记得开)