简介

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(如不需要可不安装) nginx.org,www.php.net上面有得下 全部解压出来 php基本不用做任何修改(下载直接解压版本的) 2.配置nginx 只需修改一行(nginx/conf/nginx.conf) fastcgi_param SCRIPT_FILENAME d:/nginx/html/$fastcgi_script_name; 找到大概这一行修改路径最好是绝对路径(相对路径可以自行探讨) 3.运行软件 先运行php 程序》运行》cmd 到php所在目录运行下面代码 php-cgi.exe -b 127.0.0.1:9000 -c php\php.ini 再运行nginx 到nginx所在目录 nginx.exe -c conf\nginx.conf 这样就ok了。 win下可以使用NPMserv更强大 by afen.cn


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 http://nginx.org/download/nginx-1.18.0.tar.gz
#解压
tar -zxvf nginx-1.18.0.tar.gz
#进入到nginx目录
cd nginx-1.18.0
#编译
./configure
make
make install
#启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#重启
/usr/local/nginx/sbin/nginx -s reload


nginx 的配置,

一个简单的负载均衡的示例,把www.domain.com均衡到本机不同的端口,也可以改为均衡到不同的地址上。>


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 www.domain.com;
: location / {
: proxy_pass http://myproject;
: }
: }
}


nginx解决了什么问题

解决了因服务过多,并且过多服务都打到了单台服务器上,而单台服务器承受不住的情况