关于nginx 那些事

                   看多少理论都不如实践来的快,

New Documentation

1.nginx搭建

Write here... 


     Copyright ©2018 My Company. All Rights Reserved.

nginx的第一个作用:
  负载均衡:
 什么是项目的负载均衡?
  项目的负载:
   所谓项目的负载其实就是客户访问量
   eg:
    下午三点淘宝网的客户访问量为50万
    凌晨三点淘宝网的客户访问量为50人
   在下午三点淘宝服务器的负载为50万
   。。。
  项目负载的均衡:
   其实淘宝服务器并不是只有一台
   最终其实在淘宝整个网站,在每一个省份都会有服务器
   所谓的均衡就是把所有的访问量平均分布在各个服务器上,使各个服务器的性能达到平衡,这种形式就称之为均衡

 nginx:
  其实就是一个框架,也可以理解为一个工具
  作用就是把访问量平均的分布在各个服务器上,保证各个服务器达到性能平衡的一种状态
  nginx其实就是由Linux系统进行开发的,并且java项目绝大多数都会部署在Linux上,
  所以需要把nginx配置在Linux上面
  再把java web项目打成war包,放置在各个服务器的tomcat中
  当tomcat启动的时候,相当于把同一个项目启动很多次
   eg:
    6台服务器
    6个tomcat
    每一个tomcat上面都有一个相同的项目
    当6个tomcat同时启动的时候--->相当于6个一样的项目运行
    但是这6个tomcat之间并没有什么关系,也不会自动搭建负载均衡
    第七台服务器:
     配置nginx框架
     所有的用户请求,都需要先到nginx框架中,再由ngixn统一进行分配到6个服务器的tomcat上

 linux服务器上nginx的配置:
  4.在linux上配置nginx:
  4.1.修改HOSTNAME
   vi /etc/sysconfig/network
  4.2.配置HOSTNAME和IP的映射
   vi /etc/hosts
  4.3.关闭防火墙
   service iptables stop
  4.4.关闭防火墙开机启动
   chkconfig iptables off
  4.5.重新服务器
   reboot(一定要使用root用户)
  4.6.把下载好的nginx使用XFtp上传到linux上(/usr/local/src)
  4.7.解压压缩包
   tar -zxvf nginx.tar.gz
  4.8.进入解压出的nginx目录
   cd
  4.9.在/usr/local目录下创建nginx的快捷方式快捷方式
   ./configure --prefix=/usr/local/nginx-1.12.2
        解压路径/usr/local/src
   4.9.1.报错make: *** No targets specified and no makefile found.  Stop.
   4.9.2.安装确实的包gcc pcre-devel openssl openssl-devel
    yum -y install gcc pcre-devel openssl openssl-devel
    安装成功显示:
    Dependency Updated:
      cpp.x86_64 0:4.4.7-18.el6                e2fsprogs.x86_64 0:1.41.12-23.el6    e2fsprogs-libs.x86_64 0:1.41.12-23.el6  
      krb5-libs.x86_64 0:1.10.3-65.el6         libcom_err.x86_64 0:1.41.12-23.el6   libgcc.x86_64 0:4.4.7-18.el6            
      libgomp.x86_64 0:4.4.7-18.el6            libselinux.x86_64 0:2.0.94-7.el6     libselinux-python.x86_64 0:2.0.94-7.el6 
      libselinux-utils.x86_64 0:2.0.94-7.el6   libss.x86_64 0:1.41.12-23.el6      
    Complete!

  4.10.重新执行创建快捷方式命令
   ./configure --prefix=/usr/local/nginx-1.12.2
   
  4.11.编译并安装nginx
   make & make install
   编译成功后显示:
    make[1]: Leaving directory `/usr/local/src/nginx-1.12.2'

  4.12.测试ngixn是否安装成功
   启动nginx是否成功
   启动的时候一定要从刚才创建的快捷方式目录启动,如果在解压目录下则找不到sbin目录
   cd /usr/local/nginx-1.12.2/sbin
   ./nginx

 配置nginx的负载均衡:
  反向代理
   把所有的请求全部交给nginx进行分配,这种形式就称之为反向代理
   请求--->服务器的controller
   请求--->ngixn--->分配到服务器的controller

  所有的配置信息一定要在/usr/local/中的nginx目录完成,如果配置在nginx的解压目录,是没有任何一点效果的!!!!!!!!
  1.进入nginx目录的conf文件夹,找到nginx.conf文件
   cd ....
   vi nginx.conf
  2.配置nginx.conf文件
   找到文件中server模块,这个server就是配置服务器(tomcat)的(tomcat,jboss,jetty,weblogic)


  3.配置服务器:
   找到location /模块,指定服务器的类型,自己定义的(tomcat)
   location \ {

    proxy_pass http://tomcats;

   }
  4.配置tomcats:
   一定要在location /模块的上面,如果在下面配置,按照自然顺序加载会报错,找不到tomcats
   并且一定要配置在http模块的里面
   tomcats模块中就是配置一共有多少tomcat,有10个就配10个
   upstream tomcats {
    server 192.168.67.139:8080;
    server 192.168.67.139:8081;
   }
  5.重新加载ngixn
   cd /usr/local/nginx-1.12.2/sbin
   ./sbin -s reload
  6.配置java环境变量
   省略
  7.配置两个tomcat
   记得修改端口号
   分别为8080和8081

 如果网速足够快,就可以实现8080和8081tomcat交替访问!
  默认情况下:按照理想状态下,nginx会往8080和8081交替的分配请求信息!
  如果服务器集群中,每一台的服务器性能不一样,也就意味着每一台服务器被分的访问量不一样
  这个时候默认的分配规则就满足当前服务器集群了,所以需要自定义配置
  通过权重进行配置
   weight
  在upstream tomcats {
   server 192.168.67.139:8080 weight=9;
   server 192.168.67.139:8081;
  }
  如果单独的配置一个,说明nginx最终只会往分配了权重的那一台服务器上进行分配访问量
  另一台服务器,nginx会默认认识该权重为0
  并且权重是不允许配置负数,最小为0,最大没有上线,但是配了也没有什么卵用!
  一般权重都是加起来一共等于10即可
   eg:
    5台服务器
    8080,8081,8082,8083,8084
    8080 3
    8081 2
    8082 1
    8083 2
    8084 2

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

location 模块可以注意以下配置切莫多走冤枉路

location 请求 app

root 指定路径  /home/user/

index index.html

则真实路径 /home/user/app/index.html

alias 指定路径  /home/user/

index index.html

则真实路径 /home/user/index.html

proxy_pass 代理 作用把所有请求进行转发

proxy_set_header

proxy_set_header用来重定义发往后端服务器的请求头。

语法格式: 
proxy_set_header Field Value;

Value值可以是包含文本、变量或者它们的组合。常见的设置如: 
proxy_set_header Host $proxy_host; 
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header X-Forwarded-For $remote_addr;

猜你喜欢

转载自blog.csdn.net/qq_34890925/article/details/102618700