Nginx – Wasting_Misaka.Blog https://forelink.top Hso! Wed, 11 Sep 2024 17:09:33 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.7.1 反向代理 https://forelink.top/index.php/2024/09/12/%e5%8f%8d%e5%90%91%e4%bb%a3%e7%90%86/ https://forelink.top/index.php/2024/09/12/%e5%8f%8d%e5%90%91%e4%bb%a3%e7%90%86/#respond Wed, 11 Sep 2024 17:09:32 +0000 https://forelink.top/?p=541 简介

客户端与服务端建立连接时,客户端的请求会先经过互联网访问网关,网关将请求传输给Nginx服务器,Nginx服务器再与应用服务器建立通信。 123.png

正向代理 类似于下图中的关系

321.png

当设备连接到路由器时,所有数据都需要通过路由器传输。设备发送的数据首先到达路由器,路由器作为网关,将数据转发到下一跳。因为路由器充当网络通信的关键节点,无法被绕开,因此路由器通常被称为 网关。在网络中,所有的请求和响应都必须通过这个网关传递,尤其是在隧道式代理的情况下,所有的流量都会通过网关进行转发。

在这种网络环境中,路由器不仅负责数据包的转发,还可以充当 代理服务器。这是一种隧道式代理,意味着所有数据(请求和响应)都必须经过路由器进行传递。由于所有的流量都要经过路由器处理,在高并发和大流量的情况下,路由器的性能可能成为瓶颈,导致 网络阻塞,影响整体通信速度和质量。

使用反向代理,也就是用 Nginx 充当代理服务器时,它也扮演着类似的角色,代理客户端的请求并将其转发给后端服务器。Nginx 作为代理服务器,不仅需要处理客户端请求,还需要管理后端服务器返回的数据。在隧道式代理的模式下,这可能导致性能瓶颈,特别是在高并发场景下,因为 Nginx 必须处理所有的请求和响应流量。

使用 LVS(Linux Virtual Server) ,一种内核级的负载均衡器。在使用 Nginx 反向代理时,可以使用不同的负载均衡模式,其中一种有效的方式是 DR 模型(Direct Routing),请求通过 Nginx 服务器,但返回的数据不必再经过 Nginx ,而是通过直接路由出网返回给客户端,这种方式减少了 Nginx 的负载,避免其成为性能瓶颈。

其他优化反向代理的技术:
1、Keepalive连接:Nginx 支持 HTTP Keepalive,可以在客户端与服务器之间保持长连接,减少TCP连接的开销,提升请求的响应速度
2、缓存策略:Nginx 支持强大的缓存功能,可以将静态资源或动态页面缓存到本地,减少后端服务器的压力,提升响应速度。
3、CDN(内容分发网络):Nginx 可以结合 CDN 使用,将静态内容分发到全球的 CDN 节点,减少服务器的负载并加快内容传输速度。

反向代理配置

反向代理 添加在 server-location块中 格式为:

proxy_pass [域名]

root 和 index 等详细访问信息无需添加在location中

location / {
    listen 90;
    server_name localhost;

    location / {
        proxy_pass https://www.baidu.com;
    }
}

返回的结果如图

image.png

用户访问Nginx90端口时,Nginx会根据反向代理的规则,将内容拉取并返回给用户。 反向代理不一定支持https的代理(nginx中间劫持?)

Nginx在企业中的应用

传统公司系统架构

传统应用.png

中小公司系统架构

Nginx 能够起到更多业务逻辑的作用,比如发送请求,替换URL,转发数据包,返回静态资源。 设立Nginx服务集群负载均衡分担处理请求的压力 故障转移,能将服务转移到另外的服务器 负载均衡

]]>
https://forelink.top/index.php/2024/09/12/%e5%8f%8d%e5%90%91%e4%bb%a3%e7%90%86/feed/ 0
虚拟主机与域名解析 https://forelink.top/index.php/2024/09/12/%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e4%b8%8e%e5%9f%9f%e5%90%8d%e8%a7%a3%e6%9e%90/ https://forelink.top/index.php/2024/09/12/%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e4%b8%8e%e5%9f%9f%e5%90%8d%e8%a7%a3%e6%9e%90/#respond Wed, 11 Sep 2024 17:08:58 +0000 https://forelink.top/?p=539 简介:

tcp/ip是基础的网络协议 http协议是广泛的网络协议

客户端会先经过网关,然后经过互联网,再访问对应的位置。 Nginx可以配置多个虚拟主机server,根据请求的特征来解析,并匹配相应的虚拟主机,然后将请求转发给对应的后端服务进行处理

使用host解析域名

Windows 解析

默认存放在 C:\Windows\System32\drivers\etc\hosts 中

image.png

使用notepad++进行打开

image.png

将后边的域名解析到前面的ip地址中。 添加运行了Nginx设备的ip地址,并保存。

然后在命令行中ping此域名,可以发现能够ping通这个域名

image.png

在浏览器中访问该域名,可以正常访问到nginx的欢迎页

image.png

公网域名解析

此处以阿里云控制台简单配置解析为例,进入域名控制台-域名列表中

image.png

点击解析,进入域名解析管理页面。

image.png

点击添加记录,能够看到不同的记录类型

image.png

A:将域名指向一个IPV4地址,是最常用的记录 CNAME:简单将一个域名指向另一个域名

image.png

主机记录填 * 时 是泛解析,表示满足格式的所有域名。

Nginx虚拟主机域名配置

常用的做法是在根目录/下创建www目录,然后配置相关的站点

image.png

在虚拟机上试着模拟该配置过程 创建如下结构的目录

image.png

并在test文件夹下创建 index.html 填入内容

image.png

在wwwroot下创建 index.html 填入内容

image.png

目录结构如下:

image.png

然后修改 nginx 的配置文件 nginx.conf 新建一个server指令域,作为虚拟主机包括以下内容 注意server的端口号不能有冲突

image.png

然后重启 nginx ,并查看重启后的 nginx 服务状态

systemctl reload nginx
systemctl status nginx
image.png

图示没有问题,访问80/88端口,可以正常收到nginx返回的信息

image.png

image.png

可是当访问87端口的时候,报错,错误代码:ERR_UNSAFE_PORT

image.png

原来Chrome内核的浏览器会拒绝不安全端口的请求。 需要修改配置文件切换到其他的端口,此处修改为89。 然后重启nginx服务,访问89端口。

image.png

nginx返回了正确的内容。

将server_name修改为其他域名/主机名,可以不用端口号的形式,而直接访问server_name。

server_name 匹配方式

修改了server_name后,访问用Nginx反向代理的服务器时,请求根据在配置文件中的书写顺序,依次匹配,直到全字匹配到对应的server块(和server_name相同)

server_name 可以使用正则表达式 ~使用通配符的方式匹配

server_name *.hso.com

二级域名

常用于访问对应的应用

www.example.com 用于网站主页
blog.example.com 用于博客
shop.example.com 用于电子商务功能

通过将不同的功能分配给不同的二级域名,可以使站点更易于管理,开发和维护也更加灵活。

Nginx 中可以通过修改 server_name 后的域名指向不同的目录或应用

反向代理:将不同二级域名的请求转发到不同的内部应用。 负载均衡:二级域名也可以对应不同的服务器集群,负载均衡器可以根据不同的二级域名将请求路由到相应的服务器池

HttpDNS

在 Client/Server 架构中,客户端和服务端的通信需要通过网络,域名解析是网络通信中的关键步骤,客户端首先要通过DNS获取服务器的IP地址,类似从电话簿中获取对应的号码一样,然后才能向服务器发送请求。

传统的 DNS 解析是通过 UDP 或 TCP 协议直接进行的,速度比较慢,还会有被劫持的可能。

HttpDNS 是通过 HTTP协议 来完成域名解析,返回更加精确的IP地址。客户端可以通过发送HTTP请求来解析服务器的域名,更快速更安全。

]]>
https://forelink.top/index.php/2024/09/12/%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e4%b8%8e%e5%9f%9f%e5%90%8d%e8%a7%a3%e6%9e%90/feed/ 0
Nginx核心配置指令 https://forelink.top/index.php/2024/09/12/nginx%e6%a0%b8%e5%bf%83%e9%85%8d%e7%bd%ae%e6%8c%87%e4%bb%a4/ https://forelink.top/index.php/2024/09/12/nginx%e6%a0%b8%e5%bf%83%e9%85%8d%e7%bd%ae%e6%8c%87%e4%bb%a4/#respond Wed, 11 Sep 2024 17:08:32 +0000 https://forelink.top/?p=537 简介:

Nginx在启动时,会读取并校验配置文件,然后启动worker子进程。 客户端发来请求时(如 localhost/index.html ) worker会解析请求,读取文件响应给客户端。

Nginx配置文件目录conf

截图 2024-09-10 15-22-05.png

fatscgi.conf : fastcgi相关参数的配置文件 fastcgi_params : fastcgi的参数文件 mime.types : 媒体类型 nginx.conf : Nginx默认的主配置文件,日常使用和修改的文件。 scgi_params : Nginx配置SCGI代理服务器时传递的变量和配置 uwsgi_params : Nginx配置USAGI代理服务器时传递的变量和配置

名词定义

配置指令: 在配置文件中,由 Nginx 约定的内部固定字符串,Nginx 官方文档中的英文单词为 directive。指令是 Nginx 中功能配置的最基本元素,Nginx 的每个功能配置都是通过多个不同的指令组合来实现的。

配置指令值: 配置指令key的值value

配置指令语句: 指令和指令值构成指令语句。一条指令语句可以包含多个配置指令值。在Nginx配置文件中,每一个配置指令行末以;结束

配置指令域: 配置指令在 { } 范围内为指令域,指令域可以包含指令和指令域

配置全局域: 配置文件nginx.conf 中上层没有其他指令域的区域,称为全局域。

Nginx配置文件结构

在Nginx配置文件中,配置内容会被组织成树状结构,并被花括号包围。这些被花括号包围的位置被称为放置配置指令的 上下文

Nginx最小配置文件:

默认的nginx配置文件

# nginx.conf.default
# 行首井号起注释作用

# 工作的进程个数
# 对应的是 cpu 的进程数
worker_processes 1;

events {
    worker_connections  1024;
}


http {
    # 将其他文件引入到当前配置中
    # 该文件是用来返回处理媒体类型方法的
    include       mime.types;
    # 如果mime.type 不包括服务端返回的文件类型
    # 则通知客户端浏览器下载该文件
    default_type  application/octet-stream;
    # 优化多余的拷贝 适用于静态文件传输
    sendfile        on;
    # 保持连接的时间
    keepalive_timeout  65;

    # 虚拟主机 vhost
    server {
        # 监听的端口号 不能重复
        listen       80;
        # 域名、主机名
        server_name  localhost;
        # URI路径 匹配资源
        location / {
            # 存放资源的目录
            root   html;
            # 使用的文件    
            index  index.html index.htm;
        }
        #如果报错,会跳转到 root 目录下的 50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
  • 关于常见指令域的部分
]]>
https://forelink.top/index.php/2024/09/12/nginx%e6%a0%b8%e5%bf%83%e9%85%8d%e7%bd%ae%e6%8c%87%e4%bb%a4/feed/ 0
Nginx简介与安装 https://forelink.top/index.php/2024/09/09/nginx%e7%ae%80%e4%bb%8b%e4%b8%8e%e5%ae%89%e8%a3%85/ https://forelink.top/index.php/2024/09/09/nginx%e7%ae%80%e4%bb%8b%e4%b8%8e%e5%ae%89%e8%a3%85/#comments Mon, 09 Sep 2024 15:39:16 +0000 https://forelink.top/?p=522 简介:

Nginx 是一个高性能的HTTP和反向代理web服务器,同时提供了IMAP/POP3/SMTP服务。 以稳定性、丰富的功能集、简单的配置文件、低系统资源消耗(占有内存少)和高性能(并发能力强)闻名。

特性:

负载均衡:

将客户端的请求分发到多个后端服务器(节点),来均衡流量分担后端服务器的压力,避免单一服务器过载。连续高可用。 根据负载均衡策略(轮询、权重、最少连接、IP hash等)来分配请求

动静分离:

Nginx的静态处理能力很强,但是动态处理能力不足。在企业开发中常用动静分离技术。在Nginx配置文件server{}中加入带正则匹配的location,实现动静分离。

反向代理:

反向代理是代理服务器的一种形式,与传统的“正向代理”不同,反向代理服务器位于客户端之前,代理服务器处理来自客户端的请求,并将其转发到一个或多个后端服务器。

Nginx将客户端的请求转发到后端服务器进行处理,然后将结果返回给客户端。

Nginx在反向代理过程中可以执行缓存、负载均衡、SSL加密等功能。服务端的代理服务器。

四个常用版本:

Nignx开源:

特点: 完全免费,源码公开 支持各种操作系统 社区支持

Nignx plus 商业版:

特点: 动态负载均衡 应用健康检查 高级缓存 可视化监控等等

Openresty :

将Nginx和Lua结合起来,允许使用Lua脚本进行Web应用开发 特点: 可扩展性强 嵌入式 Lua脚本 高性能 广泛使用

Tengine:

国产Nginx。是社区合作的成果。

在Debian上安装Nginx:

1. 更新软件包列表
sudo apt update
2.使用apt命令 安装Nginx
apt install nginx
3. 启动 Nginx服务 启动开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
4. 查看nginx状态 确认Nginx是否正常运行
sudo systemctl status nginx

测试安装:

打开浏览器,访问服务器所在ip。如果安装成功,能看到Nginx欢迎页。

image-20240909084433496

]]>
https://forelink.top/index.php/2024/09/09/nginx%e7%ae%80%e4%bb%8b%e4%b8%8e%e5%ae%89%e8%a3%85/feed/ 1