Nginx入门使用

正文

正向代理VS反向代理与负载均衡

  1. 正向代理:一个专门在用户和某个网站中间做中介的服务器,比较常见的就是用户自己安装的v*n
    Nginx入门使用
  2. 反向代理:反向代理隐藏了真实的服务端,通常是为网站服务的,比如网站有多个服务器(应用服务器、数据库服务器、文件服务器等等),则用户的访问会被代理,反向代理可以看作网站请来守门口的Nginx入门使用
  3. 负载均衡:一个人搞不定的事,多找几个人来承担,而Nginx则可以作为协调,把请求交给适合的服务器,这种操作就是负载均衡
    Nginx入门使用

Nginx基本操作

  1. 安装:我用的是Mac,直接 brew install nginx
  2. 启动:nginx 启动:nginx
  3. 关闭:nginx [ -s stop]关闭:nginx [ -s stop]
  4. 重启:nginx [ -s reload],如果重启会重新加载配置文件重启:nginx [ -s reload],如果重启会重新加载配置文件
  5. 很多配置是关注nginx.conf这个配置文件很多配置是关注nginx.conf这个配置文件

反向代理

  1. 将server字段下的location字段改成如下
location / {
    root   html;
    # index  index.html index.htm;
    proxy_pass http://http://127.0.0.1:8111;   # 反向代理,表示把请求都交给http://127.0.0.1:8111来处理
}
  1. 注意点:在这里,proxy_pass是nginx固有的key,与自己定义一个url的域名是不一样的

负载均衡

  1. 在http的字段下增加参与共同负载的服务器(把服务员都记录遍),并给这个“集群”自定义一个名字(后面要用),比如tomcat_8111_8222,在这里权重越大的服务器被分到的可能性越高
upstream tomcat_8111_8222{
    server	127.0.0.1:8111 weight=1;
    server	127.0.0.1:8222 weight=2;
}
  1. 重新修改server.location字段下的proxy_pass属性,反向代理这个新的集群
location / {
    proxy_pass http://tomcat_8111_8222;
}

session共享

经过负载均衡后会将请求分到不同的服务器,但是session里面的内容却不能共享,这样一来用户在两个服务器上的信息则不一致了,会让用户不爽
针对这个问题,有两种解决方式

  1. 使用ip_hash,即一旦给一个用户代理到某个服务器后,后面对他的服务都进入相同的服务器,这样做就失去了负载均衡和容灾的效果
  2. 使用redis来存取session,tomcat有和redis交互的jar包,在参与到负载均衡的tomcat的配置文件中context.xml中加上以下字段即可
  3. 记得开启redis,否则tomcat启动就抛异常了
    Nginx入门使用
    <!--tomcat和redis连通的字段-->
    <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" /> 
    

参考资料

  1. how2j——Nginx教程
  2. 知乎——反向代理为何叫反向代理?知乎——反向代理为何叫反向代理?