Web开发:web服务器-Nginx的基础介绍(含AI文稿)

目录

一、Nginx的功能:

二、正向代理和反向代理的区别

三、Nginx负载均衡的主要功能

四、nginx安装目录下的各个文件(夹)的作用:

五、常用命令


一、Nginx的功能:

1.反向代理:例如我有三台服务器,Nginx可以作为代理服务器,转发用户的请求给这三台服务器,起到集中管理和优化流量分发的作用。

2.负债均衡:存在高级负载均衡策略,比如说哪个服务器内存大,动态优先让此台服务器处理用户请求,在服务器故障时自动将流量转移到健康的服务器。

3.内存小,支持高并发访问

4.可以作为静态资源服务器、缓存服务器。

二、正向代理和反向代理的区别

1.正向代理:

例如VPN,你的网络环境中存在一个正向代理服务器(墙),你无法直接访问外网。你可以连VPN,将你的请求先发送给VPN服务器(正向代理),由VPN服务器代表你向目标服务器发出请求,获取到服务器的响应后再返回给你。在这个过程中,目标服务器只能看到VPN服务器的IP地址,无法直接识别你的真实IP地址和位置信息。

2.反向代理

反向代理:例如Nginx中, 假设有一个网站部署了Nginx作为反向代理服务器。当客户端向这个网站发送请求时,请求会先到达Nginx服务器,Nginx根据预先配置的规则和负载均衡算法,将请求转发到后端的多个服务器(如应用服务器、数据库服务器等)。后端服务器处理完请求后,将结果返回给Nginx,再由Nginx将结果返回给客户端。对客户端来说,Nginx是唯一与之通信的服务器,客户端无法直接访问到后端的真实服务器。

3.总结:

流向不同:

正向代理的流程是客户端 -> 正向代理 -> 目标服务器。

反向代理的流程是客户端 -> 反向代理 -> 后端服务器。

目的不同:

正向代理的目的是代理客户端去访问其他资源,通常用于访问控制、身份隐藏等。

反向代理的目的是代理服务器来处理客户端的请求,通常用于负载均衡、缓存、安全保护等。

配置位置:

正向代理配置在客户端或客户端访问路径中。

反向代理配置在目标服务器和客户端之间,通常是在网络边界或应用服务器前。

三、Nginx负载均衡的主要功能

1. 轮询(Round-robin)

一种算法,它将每个请求按顺序分配到后端的不同服务器上,适用于每个服务器性能相近的场景。(假如三台服务器,那就123,123,123....)

bash 复制代码
nginx
upstream backend {
    server server1.example.com;
    server server2.example.com;
    server server3.example.com;
}

2. 加权轮询(Weighted Round-robin)

加权轮询允许为每个后端服务器分配一个权重值,权重值越高的服务器每轮接收到的请求越多。

bash 复制代码
nginx
upstream backend {
    server server1.example.com weight=3;
    server server2.example.com weight=2;
    server server3.example.com weight=1;
}

3. IP哈希(IP Hash)

基于客户端IP地址,将同一个客户端的所有请求发送到同一个后端服务器。这样可以确保同一客户端的会话保持在同一服务器上。(Session:维持登录状态)

bash 复制代码
nginx
upstream backend {
    ip_hash;
    server server1.example.com;
    server server2.example.com;
    server server3.example.com;
}

4. 动静分离(Static and Dynamic Content Separation)

将静态文件(如图片、CSS、JavaScript等)的请求和动态请求(如PHP、Python等脚本生成的页面)分发到不同的后端处理机制。通常,静态文件可以直接由Nginx处理并响应,而动态请求则转发给后端应用服务器处理。

bash 复制代码
nginx
server {
    listen 80;
    server_name example.com;

    location /static/ {
        root /var/www/;
    }

    location / {
        proxy_pass http://backend;
    }

    upstream backend {
        server backend-server1;
        server backend-server2;
    }
}

四、nginx安装目录下的各个文件(夹)的作用:


1.conf

2.contrib

3.docs

4.html

5.logs

6.temp

7.nginx.exe


1.conf:

这是 Nginx 的配置文件夹,包含了 Nginx 的各种配置文件。主要的配置文件是 nginx.conf,用于配置 Nginx 的全局设置、HTTP、服务器、位置等各种参数。

举例并且注释nginx.conf的内容:

python 复制代码
# 全局配置
user nginx;  # 设置 Nginx 进程运行的用户为 nginx 用户
worker_processes auto;  # 自动设置工作进程数量,通常设置为 CPU 核心数
error_log /var/log/nginx/error.log;  # 错误日志文件的路径
pid /var/run/nginx.pid;  # Nginx 主进程的 PID 文件路径

# events 配置
events {
    worker_connections 1024;  # 每个工作进程允许的最大连接数
}

# HTTP 配置
http {
    include mime.types;  # 引入 MIME 类型配置文件
    default_type application/octet-stream;  # 默认的 MIME 类型
    sendfile on;  # 开启 sendfile 功能,提高文件传输效率
    keepalive_timeout 65;  # 客户端连接的超时时间
    gzip on;  # 开启 gzip 压缩

    # 定义后端服务器池
    upstream backend_servers {
        server backend1.example.com weight=5;  # 第一个后端服务器,权重为 5
        server backend2.example.com:8080 max_fails=3 fail_timeout=30s;  # 第二个后端服务器,指定端口和失败参数
        server unix:/tmp/backend3.sock;  # 第三个后端服务器,使用 Unix 域套接字
    }

    # 服务器配置
    server {
        listen 80;  # 监听 80 端口
        server_name example.com;  # 服务器的域名为 example.com

        location / {
            root /usr/share/nginx/html;  # 根目录位置
            index index.html index.htm;  # 默认首页文件
        }

        location /api/ {
            proxy_pass http://backend_servers;  # 请求转发到后端服务器池
            proxy_set_header Host $host;  # 设置请求头 Host
            proxy_set_header X-Real-IP $remote_addr;  # 设置请求头 X-Real-IP
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 设置请求头 X-Forwarded-For
        }

        error_page 500 502 503 504 /50x.html;  # 设置错误页的处理
        location = /50x.html {
            root /usr/share/nginx/html;  # 错误页文件的位置
        }
    }
}

2.contrib:

contrib 文件夹通常包含一些额外的模块或者补丁,这些模块可能不是 Nginx 官方正式支持的,但提供了一些额外的功能或者实验性质的特性。

3.docs:文档手册
4.html:Nginx 默认的网站根目录

当通过 HTTP 访问服务器时,如果没有配置其他的虚拟主机或者站点,Nginx 将会服务于这个目录下的文件。

5.logs:日志文件
6.temp:

temp 文件夹通常用于存放临时文件,例如上传文件时的临时存储位置。这些文件一般在使用完毕后会被删除或者清理。

7.nginx.exe:

nginx.exe 是 Nginx 的可执行文件(在 Windows 上)。它是启动和管理 Nginx 服务的主要程序,通过执行这个文件可以启动、停止或重新加载 Nginx 的配置。

五、常用命令

1.启动和停止(stop 参数会立即停止 Nginx 进程,而 quit 参数会等待当前请求处理完成后再停止。)

bash 复制代码
nginx
nginx -s stop

2.安全退出

bash 复制代码
nginx -s quit

3.重新加载配置文件(使新的配置生效)

bash 复制代码
nginx -s reload

4.查看Nginx进程

bash 复制代码
ps aux | grep nginx

(以上部分内容由AI生成,部分内容参考其他博主,如有错误恳请指正)

相关推荐
刘志辉4 分钟前
vue反向代理配置及宝塔配置
前端·javascript·vue.js
多练项目21 分钟前
公开仓库改私有再配置公钥后Git拉取仍需要输入用户名的问题
运维·git
星叔27 分钟前
ARXML汽车可扩展标记性语言规范讲解
java·前端·汽车
sky.fly1 小时前
HTML5+css3(浮动,浮动的相关属性,float,解决浮动的塌陷问题,clear,overflow,给父亲盒子加高度,伪元素)
前端·css·html
Coisini_甜柚か1 小时前
打字机效果显示
前端·vue3·antv
cqbzcsq1 小时前
Nginx简易配置将内网网站ssh转发到外网
运维·nginx·ssh
郑小憨1 小时前
Node.js NPM以及REPL(交互式解释器) 使用介绍(基础介绍 二)
开发语言·前端·javascript·npm·node.js
嚣张农民1 小时前
在 WebSocket 连接中出现错误时,如何处理和捕获错误?
前端·javascript·面试
代码搬运媛1 小时前
前端开发利器:npm 软链接
前端·npm·node.js
嵌入式Linux,1 小时前
BUG: scheduling while atomic
linux·运维·服务器·bug