什么是反向代理
正向代理反向代理Nginx进程模型
Worker抢占机制Nginx事件处理配置文件
配置结构主要配置常用命令
日志分割
定时任务分割日志配置一个静态文件使用GZIP压缩Location匹配规则跨域的方式
同源策略跨域资源共享 反向代理两者比较配置防盗链负载均衡
负载均衡算法负载均衡实例长连接优化nginx缓存
控制浏览器缓存反向代理缓存配置SSL证书
证书安装(腾讯云)HTTP 自动跳转 HTTPS 的安全配置(可选)参考NginxNginx是高性能的http和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务
主要功能有
反向代理通过配置文件实现集群和负载均衡静态资源虚拟化什么是反向代理正向代理正向代理→代理客户端:客户端无法直接从将请求送达目标服务器,可以通过能够请求到目标服务器的代理服务器转发请求到目标服务器,并将从目标服务器获取的内容返回给客户端,这就是正向代理。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径,就比如说我们再居家办公的时候需要通过vpn访问内网环境,vpn起到的作用就是正向代理。
正向代理可以使用缓存特性减少网络使用率。
反向代理反向代理→代理服务端:客户端不知道服务器的实际地址,通过访问代理服务器由其将请求转发到相应的服务器上。
反向代理的作用
保护和隐匿原始服务器
反向代理可以不让客户端直接访问到原始资源服务器
负载均衡
反向代理服务器可以将多个客户端请求通过负载均衡算法将这些请求分发到不同的服务器上以减轻单个服务器的压力,当然,反向代理服务器也可以有多个组成代理服务器集群。
缓存
反向代理服务器可以像正向代理服务器那样拥有缓存的作用,可以将原始资源服务器返回的静态资源等数据进行缓存,提高请求效率,这也是CDN技术的核心。
路由
可以通过域名中的路由等信息将请求进行分发到不同的服务器上,这点与负载均衡有点像,但是负载均衡主要目的是为了平衡各个服务器的压力,路由是将需求不同的请求分发到不同的服务器。
Nginx进程模型nginx中可分为主进程(master)和工作进程(worker),master
进程主要是用来管理woker
进行,工作进程可以有多个,但是默认只有1个。
[root@VM-24-13-centos nginx-1.22.0]# ps aux|grep nginx
root 2868 0.0 0.0 22292 1456 ? Ss Jul25 0:00 nginx: master process ./nginx
nobody 18991 0.0 0.0 24376 1768 ? S 20:24 0:00 nginx: worker process
可以通过worker_processes
配置来指定工作进行的数量
#user nobody;
worker_processes 2;
[root@VM-24-13-centos nginx-1.22.0]# ps aux|grep nginx
root 2868 0.0 0.0 22292 1456 ? Ss Jul25 0:00 nginx: master process ./nginx
nobody 23812 0.0 0.0 24376 1492 ? S 20:49 0:00 nginx: worker process
nobody 23813 0.0 0.0 24376 1492 ? S 20:49 0:00 nginx: worker process
master
进程主要是发送以下命令给worker
进程使其停止、重启等
Worker抢占
nginx是多进程单线程,这样不仅能够提高nginx的并发效率,也能使进程之间相互不会影响,即使一个worker
进程挂掉了不至于影响其它进程。
由主进程创建的 listen socket,要被 fork 出来的子进程共享,但是为了避免多个子进程同时争抢共享资源,nginx 采用一种策略:使得多个子进程,同一时段,只有一个子进程能获取资源,就不存在共享资源的争抢问题。
成功获取锁的,能获取一定数量的资源,而其它没有成功获取锁的子进程,不能获取资源,只能等待成功获取锁的进程释放锁后,nginx 多进程再重新进入锁竞争环节。
Nginx事件处理master进程管理多个worker进程,然后每个进程对消息的处理使用Linux的epoll模型来仅从io多路复用
events {
#不写 默认也是epoll
use epoll;
#一个worker进程最大的连接数
worker_connections 1024;
}
配置文件配置结构主要配置