Nginx


Nginx

概念

nginx是一个使用c语言开发的高性能的http服务器及反向代理服务器。

nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

正向代理

代理客户端的请求,代替客户端向服务端发送请求,客户端的请求都会发送到代理服务器,再由代理服务器统一发送给服务器端。

经过正向代理服务器,访问服务器端。:VPN

反向代理

代替服务器端接收请求,所有的请求先会到代理服务器,再由代理服务器发送到各个服务器端。

整合多个服务器端,为一个请求地址。:服务器负载均衡

负载均衡

通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。

nginx中负载均衡的策略

  • 轮询(默认)

    每个请求按照时间顺序,依次逐一分配到配置的服务器上。每个服务器权重一样。

    upstream backserver { 
    server 192.168.0.14; 
    server 192.168.0.15; 
    } 
    
  • 加权轮询

    在轮询的基础上,在每个服务器上设置权重,根据权重比例将请求配置到服务器上。每个服务器接收到的请求数比例,与权重一致。

    upstream backserver { 
    server 192.168.0.14 weight=8; #通过weight为每个服务器加上权重
    server 192.168.0.15 weight=10; 
    } 
    
  • IP绑定 ip_hash

    根据算法将请求ip地址计算出一个hash值,同一个ip地址的请求发送到固定的服务器上,解决session不能共享的问题。

    upstream backserver { 
    ip_hash; 
    server 192.168.0.14:88; 
    server 192.168.0.15:80; 
    } 
    
  • fair(第三方)

    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    upstream backserver { 
    server server1; 
    server server2; 
    fair; 
    } 
    
  • url_hash(第三方)

    upstream backserver { 
    server squid1:3128; 
    server squid2:3128; 
    hash $request_uri; 
    hash_method crc32; 
    } 
    

nginx安装

windows环境下安装

  • 1、官网下载压缩包:http://nginx.org/en/download.html
  • 2、解压到安装目录
  • 3、通过安装目录下,nginx.exe启动。
  • 4、nginx启动成功后,默认会接管80的端口。浏览器访问127.0.01:80或127.0.01或localhost。出现nginx提示信息,则表示启动成功。

nginx常用命令

  • nginx的启动和关闭
  • nginx -h 查看帮助信息
  • nginx -v 查看Nginx的版本号
  • nginx -V 显示Nginx的版本号和编译信息
  • start nginx 启动Nginx
  • nginx -s stop 快速停止和关闭Nginx
  • nginx -s quit 正常停止或关闭Nginx
  • nginx -s reload 配置文件修改重新加载

nginx使用

修改nginx默认端口

  • 1、在安装目录/conf/nginx.conf文件中修改端口

     server {
            listen       8080; #修改端口为8080
            server_name  localhost;
    
  • 2、执行nginx重新加载配置文件的命令:nginx -s reload

使用nginx代理项目

启动springboot项目时指定端口号:java -jar demo.jar --server.port==8081

  • 1、在nginx.conf的http模块中配置负载均衡信息

    upstream demo {
    		server 127.0.0.1:8080 weight=1;
    		server 127.0.0.1:8081 weight=1;
    	}
    
  • 2、在server中配置代理

    location / {
                root   html;
                index  index.html index.htm;
    			proxy_pass http://demo;	#配置http模块中配置的负载均衡信息,demo
            }
    
  • 3、浏览器访问nginx监听的端口,nginx会将请求按照负载均衡策略发送到服务器上。