nginx是什么?nginx常用方法附带对应的配置文件

1 篇文章 0 订阅

nginx 常用用法

什么是nginx

Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

常用命令

启动服务 start nginx

停止服务 nginx -s stop

重启命令 nginx -s reload

反向代理

反向代理概念

先说正向代理,比如要访问一个网站,但是不能直接访问,只能先找个工具,通过工具才能访问. 工具就叫做正向代理。
所谓的反向代理,指的是用户要访问一个网站,但是网站悄悄地把这个请求交给另一个网站来做,那么另一个网站就是反向代理了。
在当前教程指的就是访问nginx,但是nginx把请求交给tomcat来做。

相关配置文件

worker_processes  1;
events {
    worker_connections  1024;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
     server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://127.0.0.1:8111;
    }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        } 
    }
}

监听80端口来得请求,将所有请求转发到8111端口

location / 表示处理所有请求

proxy_pass http://127.0.0.1:8111; 表示把请求都交给http://127.0.0.1:8111来处理

动静分离

动静分离概念

所谓的动静分离就是指图片,css, js之类的都交给nginx来处理,nginx处理不了的,比如jsp 就交给tomcat来处理~

好处是nginx处理静态内容的吞吐量很高,比tomcat高多了,这样无形中提升了性能。
下面提供两套配置文件,第一套是只代理css,js,html,第二套是代理全部的静态资源,Root为所在的路径,根据自己的实际情况编写

相关配置文件

worker_processes  1;

events {
	worker_connections  1024;
}
 
http {
    include   mime.types;
    default_type  application/octet-stream;
    sendfileon;
    keepalive_timeout  65; 
    server {
    listen   80;
    server_name  localhost;
    
    location / {
    	proxy_pass http://127.0.0.1:8111;
    }
     
    location ~\.(css|js|png)$ {
   	 	root C:/Users/X7TI/Downloads/tomcat_8111/webapps/ROOT;
    }
    
	    error_page   500 502 503 504  /50x.html;
	    location = /50x.html {
	    root   html;
	    }
     
    }
}

worker_processes  1;
events {
	worker_connections  1024;
}
http {
    include   mime.types;
    default_type  application/octet-stream;
    sendfileon;
    keepalive_timeout  65;
    server {
	    listen   80;
	    server_name  localhost;
    location / {
	    root   html;
	    index  index.html index.htm;
    }
	    error_page   500 502 503 504  /50x.html;
	    location = /50x.html {
	    root   html;
	    }
    }
}

负载均衡

负载均衡的概念

负载均衡的概念就是当访问量很大的时候,一个 Tomcat 吃不消了,这时候就准备多个 Tomcat,由Nginx按照权重来对请求进行分配,从而缓解单独一个Tomcat受到的压力

相关配置文件

worker_processes  1;
events {
worker_connections  1024;
}
 
http {
include   mime.types;
default_type  application/octet-stream;
sendfileon;
keepalive_timeout  65; 

upstream tomcat_8111_8222{

    server  127.0.0.1:8111  weight=1;
    server  127.0.0.1:8222 weight=2;
}
 
server {
	listen   80;
	server_name  localhost;
 
 
location / {
	proxy_pass http://tomcat_8111_8222;
}
 
location ~\.(css|js|png)$ {
	root C:/Users/X7TI/Downloads/tomcat_8111/webapps/ROOT;
}

error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}

}
  
}

weight表示权重,值越大,被分配到的几率越大

nginx-Session共享

负载均衡Session问题

通过负载均衡,我们可以把请求分发到不同的 Tomcat 来缓解服务器的压力,但是这里存在一个问题: 当同一个用户第一次访问tomcat_8111 并且登录成功, 而第二次访问却被分配到了tomcat_8222, 这里并没有记录他的登陆状态,那么就会呈现未登录状态了,严重伤害了用户体验。

解决办法一: ip_hash

通过ip地址标记用户,如果多次请求都是从同一个ip来的,那么就都分配到同一个tomcat.
这样就不会出现负载均衡 session问题了. 处理手段也很简单,如图所示在upstream最后加上ip_hash;就行了。

不过这种方案并不完美,当如下几种情况发生时就有问题:

  1. 大量请求来之某个局域网,那么相当于就没有负载均衡了

  2. 如果tomcat_8111 挂了,那么此时nginx只能把请求交给tomcat_8222,但是这里却没有记录session,用户体验依然受影响。

     upstream tomcat_8111_8222{    
         server  127.0.0.1:8111  backup;
         server  127.0.0.1:8222 weight=2;
     	ip_hash;
     }
    

解决办法二: redis+tomcat-sessoin-manager

既然第一种解决办法有问题,那么就采用第二种解决办法:用Redis来存取session.
Redis是什么呢?说简单点就是个独立的Hashmap,用来存放键值对的。
这样当tomcat1需要保存session值的时候,就可以把它放在Redis上,需要取的时候,也从Redis上取。
那么考虑这个情景:

  1. 用户提交账号密码的行为被分配在了tomcat8111上,登陆信息被存放在redis里。
  2. 当用户第二次访问的时候,被分配到了tomcat8222上
  3. 那么此时tomcat8222就会从redis去获取相关信息,一看有对应信息,那么就会呈现登陆状态。

这样就规避了解决办法一: ip_hash里会出现的两种问题了。

具体操作

接下来进行具体操作,分几个步骤

  1. 启动redis
  2. 给两个tomcat使用jar包
  3. 配置两个tomcat
  4. 重启两个tomcat
  5. 测试

修改context.xml

修改tomcat/conf/context.xml ,增加下面这坨东西

  <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />  
  <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"  
   host="127.0.0.1"  
   port="6379"  
   database="0"  
   maxInactiveInterval="60" /> 

两个tomcat都要改

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值