Nginx

Nginx简介

Nginx是一种高性能的Http服务器反向代理Web服务器,其优势是占用内存小支持高并发等。


正向代理与反向代理

正向代理:当客户端访问无法直接访问的资源时(如:谷歌),需要架设一个代理服务器,用于将请求转发至目标服务器;对于用户来说访问的还是目标资源的地址,但是真正的访问请求是由代理服务器转发至目标服务器的,因此目标服务器接收到的请求都来自代理服务器,起到了屏蔽客户端的作用。则该代理服务器起到的作用就是正向代理。如:为访问google所设置的VPN公司内网环境下访问外网资源时设置的代理服务器等都属于正向代理。

反向代理反向代理服务器与目标服务器作为一个整体对外提供服务,访问目标服务器资源时所请求的地址并非目标服务器的真实地址;当用户请求到达请求地址所在服务器(即反向代理服务器)时,该服务器按照预设的规则将请求转发至指定的资源服务器获取响应。对于资源服务器来说,请求都来自代理服务器而并非用户,因此称为反向代理服务器;而对于用户来说反向代理服务器隐藏了真正的资源服务器地址,起到了屏蔽服务端的作用。


Nginx配置文件结构

全局块:影响Nginx服务运行的配置指令
worker_processes  1;	# Nginx处理并发量
events块:影响Nginx与用户网络的连接
events {
	# 事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; 
	use epoll;
	# 单进程最大连接数
    worker_connections  1024;
}
Http块(Http全局块 + Server块):服务器配置

Nginx常用命令

需进入Nginx安装目录下的sbin目录中执行以下操作:

  • ./nginx -v:查看版本
  • ./nginx -s stop:关闭服务器;
  • ./nginx:启动服务;
  • ./nginx -s reload:重加载

负载均衡

通过反向代理服务器将多个请求按照一定的规则转发至服务器集群中的不同服务器上,该过程称为负载均衡。

(1) 反向代理配置:
	http {
		server {
			# nginx服务器绑定地址
	        listen  80;
	        server_name  本机域名;
	        # 反向代理地址
	        location / {
	            proxy_pass  代理地址[如:http://192.168.10.89:8080];
	        }
	        # 根据不同的访问路径跳转至不同的服务地址
	        # location ~ /a/ {
	        # 	proxy_pass http://192.168.10.89:8080;
	        # }
	        # location ~ /b/ {
	        # 	proxy_pass http://192.168.10.89:8081;
	        # }
	    }
	}
(2) 负载均衡配置:
	http {
		# 负载均衡服务器列表
		upstream 服务名称[如:myserver] {
			ip_hash[负载均衡策略:轮询(默认)、加权轮询(weight=n)、ip_hash、fair(按照服务器响应时间)]
			server 192.168.1.1;
			server 192.168.1.2;
		}
		server {
			# nginx服务器绑定地址
	        listen  80;
	        server_name  本机域名;
	        # 反向代理地址
	        location / {
	            proxy_pass  http://myserver;
	        }
	    }
	}

动静分离

为提高网站解析效率,将网站内的静态资源与动态资源分配至不同的服务器进行解析以加快服务器响应速度。利用Nginx处理静态资源请求,如:Html、js、css等。

http {
    server {
        listen       80;
        server_name  localhost;
        # 请求路径 /image/ 对应的请求直接指向本地磁盘 /images 路径下的资源
        location /image/ {
            root /images/;
        }
        # 请求路径 /js/ 对应的请求直接指向本地磁盘 /js 路径下的资源
        location /js/ {
            root /js/;
            # autoindex设置是打开显示文件夹中的所有内容
            autoindex on;
        }
    }
}

Nginx高可用

通过Keepalived软件,定时执行脚本判断Nginx服务是否可用;在Nginx主服务器不可用时自动切换至从服务器对外提供服务实现Nginx的高可用。

Keepalived + nginx 实现高可用


Nginx实现原理

Nginx启动后包含有个进程:

  • Master:管理者进程,用于接收请求信号分配至Worker;一个Master对应多个Worker(Woker个数取决于 nginx.conf 文件中worker_processes的配置);
  • Worker:工作进程,当Master接收到来自客户端的请求,对应的所有Worker采用争抢机制获取执行请求的资格,然后实际执行请求处理。
    在这里插入图片描述

Nginx、redis等软件都采取IO多路复用机制,每个工作进程都是独立进程,但每个进程只有一个主线程,通过异步非阻塞的方式来处理请求。通常worker设置与cpu核数相同最为合适,因为设置少了浪费cpu资源,设置多了频繁的cpu切换带来性能损耗。

一个worker通常占用2个或4个连接数:两个与客户端的连接以及可能存在的两个与动态资源服务器的连接;

Nginx支持最大并发数:

  • 作为静态资源服务器时:(worker_connections * worker_processes) / 2
  • 作为反向代理服务器时:(worker_connections * worker_processes) / 4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值