简介
nginx是一个高性能的反向代理和负载均衡中间件。
优点
在性能上,Nginx占用很少的系统资源,能支持更多的并发连接,达到更高的访问效率; 在功能上,Nginx是优秀的代理服务器和负载均衡服务器; 在安装配置上,Nginx安装简单、配置灵活。 Nginx支持热部署,启动速度特别快,还可以在不间断服务的情况下对软件版本或配置进行升级,即使运行数月也无需重新启动。
热部署:应用正在运行的过程中升级软件,而不用重启软件。
功能
nginx不能直接处理java或者php等逻辑,nginx只是一个中转站(类似于路由器)。他可以把静态资源的请求直接返回给前端静态资源, 把动态资源(接口)请求转发给相应的后端,例如tomcat,这些tomcat没有nginx也是可以访问的。因为大部分情况下,这些后端程序的端口 是放到防火墙里面的(不对外暴露)客户端想要访问这些服务,直接访问nginx的服务即可。
nginx不能直接处理java或者php等逻辑,nginx只是一个中转站(类似于路由器)!!!
反向代理
反向代理的意思是你可以访问到服务,但是你访问的服务不是真正的服务,只是nginx给你转发的服务,反向代理成功的隐藏了服务的真实ip。 类似于qq匿名聊天,你可以和网友聊天,但是不知道那个网友真正是谁。可以有效的提高系统的安全性。
负载均衡策略
1.4.1 轮询(默认)
每个服务按照时间顺序逐一分配到不同的后端服务器上,如果后端服务器挂掉,能自动剔除。
upstream backend { # no load balancing method is specified for Round Robin server 127.0.0.1:8080; server 127.0.0.1:8082; }
1.4.2 指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务性能不均的情况。
upstream backserver { server 127.0.0.1:8080 weight=10; server 127.0.0.1:8082 weight=100; }
1.4.3 ip绑定
每个请求按照客户端的ip的hash结果来分配,这样每个客户端进来的请求就会进到一个服务器里面(集群环境中采用此种方案可以不用考虑session共享问题,或者服务器缓存问题)
upstream backserver { ip_hash; server 127.0.0.1:8080; server 127.0.0.1:8081; }
1.4.4 最少连接
每次请求都会进到最少连接数的服务器,然后再考虑轮询。
upstream backend { least_conn; server 127.0.0.1:8080; server 127.0.0.1:8081; }
nginx的安装,
windows
写一下简单的安装方法 1.下载软件 需要的软件有nginx,php,mysql(如不需要可不安装) ,上面有得下 全部解压出来 php基本不用做任何修改(下载直接解压版本的) 2.配置nginx 只需修改一行(nginx/conf/) fastcgi_param SCRIPT_FILENAME d:/nginx/html/$fastcgi_script_name; 找到大概这一行修改路径最好是绝对路径(相对路径可以自行探讨) 3.运行软件 先运行php 程序》运行》cmd 到php所在目录运行下面代码 -b 127.0.0.1:9000 -c php\ 再运行nginx 到nginx所在目录 -c conf\ 这样就ok了。 win下可以使用NPMserv更强大 by
centos
#安装gcc yum install gcc-c++ #安装pcre yum install -y pcre pcre-devel #安装zlib yum install -y zlib zlib-devel #安装openssl yum install -y openssl openssl-devel #下载nginx wget /download/nginx-1.18. #解压 tar -zxvf nginx-1.18. #进入到nginx目录 cd nginx-1.18.0 #编译 ./configure make make install #启动 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/ #重启 /usr/local/nginx/sbin/nginx -s reload
nginx 的配置,
一个简单的负载均衡的示例,把均衡到本机不同的端口,也可以改为均衡到不同的地址上。>
http { : upstream myproject { : server 127.0.0.1:8000 weight=3; : server 127.0.0.1:8001; : server 127.0.0.1:8002; : server 127.0.0.1:8003; : } : server { : listen 80; : server_name ; : location / { : proxy_pass http://myproject; : } : } }
nginx解决了什么问题
解决了因服务过多,并且过多服务都打到了单台服务器上,而单台服务器承受不住的情况