nginx

一、nginx简介

1、什么是nginx?

Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存小,并发能力强,
Nginx的并发能力在同类型的网页服务器中表现良好
Nginx专为性能优化而开发,性能是最重要的考量,实现上非常注意效率,能经受高负载的考验,支持高达50000个连接数

2、反向代理

正向代理:代理客户端的就称之为正向代理(比如浏览器代理就是正向代理)
nginx_第1张图片

反向代理:代理服务器的就称之为反向代理 ==》 也就是客户端并不知道真实的
服务器,而是直接访问代理服务器,代理服务器根据域名等将请求转发给真实的
服务器
nginx_第2张图片

3、负载均衡

服务器的性能是处理并发请求的上限,如果单个服务器解决不了,那么我们就可以增加
服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器的情况
改为分发到多个服务器上。

将负载分发到不同的服务器,就是我们所说的负载均衡
nginx_第3张图片

4、动静分离

为了加快网站的解析速度,可以把动态页面和静态页面交由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力
nginx_第4张图片

二、Linux上安装nginx

不重要,自己找博客看吧

三、nginx的常用命令

1、使用nginx命令的前提条件: 进入nginx目录
cd /usr/local/nginx/sbin

2、查看nginx的版本号
./nginx -v
nginx_第5张图片

3、启动nginx
./nginx

4、关闭nginx
nginx -s stop

5、重新加载nginx
nginx -s reload

四、nginx的配置文件

1、nginx 配置文件的位置

/usr/local/nginx/conf/nginx.conf
nginx_第6张图片

2、nginx配置文件详解


#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;

    upstream nginx-cluster{
        server 127.0.0.1:8082;
    }
    server {
        listen       80;
        server_name  localhost;

	location /api {
            proxy_pass http://nginx-cluster;
        }

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

nginx配置文件主要由三部分组成

  • 第一部分:全局块
    从配置文件开始到 events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令,比如:worker_processes 1; 值越大,可以支持的并发处理量就越多

  • 第二部分 events块
    events块涉及的指令主要是 :用户与nginx服务器之间的网络连接。worker_connections 1024; 支持的最大连接数

  • 第三部分 http块
    http 全局块
    server块

五、nginx实现反向代理

1、反向代理实例1

实现效果,在浏览器地址栏上输入地址 www.123.com,跳转到linux中安装的tomcat主页面中

1)在linux中安装tomcat,在8080端口启动
nginx_第7张图片
2)关闭防火墙
service iptables stop (centos6)

3)在windows系统中通过浏览器访问tomcat服务器
nginx_第8张图片
4) 访问过程
nginx_第9张图片
5)本地host文件编辑域名和ip的映射
nginx_第10张图片

6)配置反向的代理,将发送到192.168.2.180:80的请求转到到本地的 127.0.0.1:8080

 server {
        listen       80;
        server_name  192.168.2.180;


        location / {
            proxy_pass http://127.0.0.1:8080;
        }
    }

nginx_第11张图片

2、反向代理实例2

使用nginx反向代理,根据访问的路径,跳转到不同的端口服务中
nginx监听端口为9001
访问 127.0.0.1:9001/edu/ 直接跳转到127.0.1:8080
访问 127.0.0.1:9001/vod/ 直接跳转到127.0.1:8081

  1. 在虚拟机的8081 和 80801启动两个tomcat
    nginx_第12张图片
    nginx_第13张图片

  2. 在tomcat中创建文件夹和测试页面
    nginx_第14张图片
    nginx_第15张图片

3)配置nginx

 server {
        listen       9001;
        server_name  192.168.2.180;


        location /edu/ {
            proxy_pass http://127.0.0.1:8080;
        }
		location /vod/ {
            proxy_pass http://127.0.0.1:8081;
        }
    }

nginx_第16张图片

六、nginx实现负载均衡

实现效果
在浏览器地址栏中输入地址 :192.168.2.180/edu/a.html,使请求平均到 8080 和 8081端口的Tomcat中

1)准备2台tomcat服务器:8080 8081

2)在2台tomcat的webapps目录中,创建名称是edu的文件夹,在edu文件夹中创建页面 a.html,用于测试。 启动两台 tomcat,准备成功,示例如下(乱码不管了,没什么影响)
nginx_第17张图片
nginx_第18张图片
3)对nginx.conf 进行负载均衡配置

 #负载均衡
	upstream myserver{
		server 192.168.2.180:8080;
		server 192.168.2.180:8081;
	}
	#监听 192.168.2.180:80,并对请求进行分流
    server {
        listen       80;
        server_name  192.168.2.180;


        location / {
            proxy_pass http://myserver;
        }
    }
	4) 效果如下

nginx_第19张图片

刷新后

nginx_第20张图片

nginx 负载均衡的策略:
1、轮询(默认)
每个请求按时间逐一分配到不同的后端服务器,如果后端服务器down了,则能自动剔除

2、weight
weight代表权重,默认为1,权重越高,被分配的客户端就越多

#负载均衡
	upstream myserver{
		server 192.168.2.180:8080 weight=1;
		server 192.168.2.180:8081 weight=2;
	}

3、ip_hash
每个请求按照ip的hash结果分配,那么只要用户的ip不变,访问的服务器就不变,可以解决session的问题

upstream myserver{
            ip_hash;
		server 192.168.2.180:8080 weight=1;
		server 192.168.2.180:8081 weight=2;
	}

4、fair
根据后端服务器的响应时间来分配,响应时间短的优先分配

upstream myserver{
		server 192.168.2.180:8080 weight=1;
		server 192.168.2.180:8081 weight=2; 
            fair; 
	}

七、nginx实现动静分离

八、nginx配置高可用

九、Nginx原理

你可能感兴趣的:(nginx,nginx)