当前位置: 首页 > news >正文

Nginx学习笔记

目录

  • 1.相关概念
  • 2.正向代理和反向代理
    • 2.1正向代理
    • 2.2反向代理
  • 3.负载均衡和动静分离
    • 3.1负载均衡
    • 3.2动静分离
  • 4.使用二进制包安装nginx
  • 5.Nginx的启停
  • 6.Nginx配置文件介绍
  • 7.Nginx的高可用集群
  • 8.原理
    • 8.1mater 和 worker

1.相关概念

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

2.正向代理和反向代理

2.1正向代理

如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。即正向代理隐藏客户端。

2.2反向代理

只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。即反向代理隐藏服务器端。

3.负载均衡和动静分离

3.1负载均衡

  • 通过Nginx,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
    在这里插入图片描述

3.2动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。就是把动态的资源放到专门的服务器,静态的放到别的的专门的服务器,客户访问的时候由nginx进行请求的转发。

什么是动态资源,什么是静态资源

静态资源,内容固定不变,直接以文件形式存储在服务器上,无需服务器端实时生成。常见类型的有前端文件,前端文件。动态资源,内容由服务器实时生成,常见类型的有动态页面和API接口。

在这里插入图片描述

4.使用二进制包安装nginx

  • 1.下载nginx二进制包(地址:https://nginx.org/en/download.html)
  • 2.解压,安装
#安装依赖yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
# 解压安装包
tar -zxvf nginx-1.28.0.tar.gz
# 编译
./configure --prefix=指定目录
make && make install
  • 3.添加环境变量
echo 'export PATH=$PATH:指定目录/sbin' >> ~/.bashrc
source ~/.bashrc

5.Nginx的启停

# 启动
nginx
# 停止
nginx -s stop
# 重新加载 nginx
nginx -s reload

6.Nginx配置文件介绍

#user  nobody; # 运行Nginx的用户(默认nobody,建议改为专用用户如www-data)
worker_processes  1; # 工作进程数(通常设为CPU核心数,如4核设为4),worker_processes auto; 可自动匹配CPU核心数。#error_log  logs/error.log; # 错误日志路径(可设置级别:notice, info, warn, error)
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid; # 存储主进程PID的文件路径events {worker_connections  1024;     # 单个工作进程的最大连接数# multi_accept on;            # 是否允许一个进程同时接受多个连接(默认off)# use epoll;                  # Linux高性能事件模型(默认自动选择)
}http {include       mime.types;  # 引入MIME类型文件(定义文件扩展名与Content-Type的映射)default_type  application/octet-stream; # 默认响应类型(未知类型时作为二进制流处理)# 访问日志路径及格式,$remote_addr:客户端IP。$request:请求方法(如 GET / HTTP/1.1)。$status:响应状态码(如200、404)。#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on; # 启用高效文件传输模式(零拷贝技术),传统文件传输需要在内核态和用户态之间多次拷贝数据,而 sendfile 允许 Nginx 直接在内核空间将文件内容发送到网络套接字,跳过用户态的拷贝,减少 CPU 和内存开销。#tcp_nopush     on; # 当 sendfile 启用时,tcp_nopush 会等待数据包填满一个 MSS(最大报文段大小)后再发送,减少小包的数量。#keepalive_timeout  0; 设置客户端与服务器之间的 TCP 长连接保持时间(单位:秒)。keepalive_timeout  65;#gzip  on; 启用 Gzip 压缩,减少传输数据量,节省带宽。server {listen       80; # 监听80端口server_name  localhost; # 服务器域名(可配置多个,如 example.com *.example.com)(_代表允许所有的域名)#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;  # 网站根目录(相对路径为Nginx安装目录下的html/)index  index.html index.htm; # 默认首页文件}#error_page  404              /404.html; # redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html; # 自定义错误页面location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;  SSL证书路径#    ssl_certificate_key  cert.key;  私钥路径#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

listen和server_name的区别: listen定义服务器块监听的 IP 地址和端口。如果省略 listen,Nginx 会默认监听 0.0.0.0:80(IPv4)或 [::]:80(IPv6)。定义服务器块的 域名(Host头),用于区分不同网站的请求。

7.Nginx的高可用集群

在这里插入图片描述

8.原理

8.1mater 和 worker

nginx 启动后,是由两个进程组成的。master(管理者)和worker(工作者)。一个nginx 只有一个master。但可以有多个worker

在这里插入图片描述
在这里插入图片描述

Nginx 同 redis 类似都采用了 io 多路复用机制,每个 worker 都是一个独立的进程,但每个进 程里只有一个主线程,通过异步非阻塞的方式来处理请求, 即使是千上万个请求也不在话 下。每个 worker 的线程可以把一个 cpu 的性能发挥到极致。所以 worker 数和服务器的 cpu 数相等是最为适宜的。设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。

相关文章:

  • 百事公司借力一级方程式赛车拓展全球市场
  • gc2053驱动学习笔记
  • Python训练营---Day45
  • 60天python训练计划----day45
  • 《汇编语言》第15章 外中断
  • 从《现实不似你所见》探寻与缘起性空的思想交织
  • 【定昌linux开发板】关闭ssh 端口 22
  • 使用DrissionPage与Tkinter构建专业级抖音数据分析工具
  • 对象数组练习(增删改查)
  • 基于STM32的DS18B20温度远程监测LCD1602显示
  • float和float32有什么区别
  • ArcGIS Pro 3.4 二次开发 - 宗地
  • Python实例题:Python计算二元二次方程组
  • 当.txt无法打开,如何恢复成记事本
  • 【react+antd+vite】优雅的引入svg和阿里巴巴图标
  • js常用函数总结
  • 使用Python提取照片元数据:方法与实战指南
  • Next打包导出静态文件(纯前端),不要服务器端(node), 隐藏左下角调试模式(“next“: “^15.3.3“,)
  • python版若依框架开发:项目结构解析
  • python打卡day45
  • 网站建设公司做销售好不好?/安阳企业网站优化外包
  • 建设执业资格管理中心网站/杭州今天查出多少阳性
  • ceos 6.8安装wordpress/seo优化的网站
  • 新疆网站建设/长沙网红打卡地
  • ps做网站的视频/外贸推广网站
  • 做戒指网站的logo照片/南昌seo排名