Nginx初学习

1、Nginx是什么

Nginx(发音同 engine x)是一个高性能的 HTTP 和反向代理服务器,可以同时处理大量的并发请求。它是一个开源软件,可以免费使用,并且被广泛应用于互联网、移动设备、数据中心等领域。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好。

Nginx 可以在大多数 Unix 系统上编译运行,并有 Windows 移植版。Nginx 的 1.19.4 版本发布于 2023 年 4 月 18 日,官网为 nginx.org。Nginx 是一款面向性能设计的 HTTP 服务器,相较于 Apache、Tomcat 等服务器,Nginx 具有内存占用少,启动速度快,并发能力强等优势,能够支持高达 5 万并发连接。

Nginx 采用事件驱动的架构,通过 epoll 模型来处理大量并发连接,减少了不必要的线程创建和上下文切换开销。

nginx 具有以下特点:

  1. 高效:nginx 采用了异步、非阻塞的方式处理请求,可以最大程度地利用系统资源,提高系统的吞吐量和响应速度。
  2. 稳定:nginx 经过了大量的实践检验和优化,具有非常高的稳定性和可靠性,可以在各种环境下运行。
  3. 灵活:nginx 具有非常灵活的配置方式,可以根据不同的需求进行配置,例如可以配置为 HTTP 服务器、反向代理服务器、负载均衡器等。
  4. 模块化:nginx 采用了模块化的设计,可以根据需要加载不同的模块,实现不同的功能,例如支持 rewrite 规则、FastCGI、SSL 等。

nginx 的主要功能包括:

  1. HTTP 服务器:nginx 可以配置为 HTTP 服务器,提供 HTTP 服务,支持 gzip 压缩、缓存、日志等功能。
  2. 反向代理服务器:nginx 可以配置为反向代理服务器,将请求转发给后端的应用服务器,并对请求进行负载均衡。
  3. 负载均衡器:nginx 可以配置为负载均衡器,将请求均衡地分配给后端的多个应用服务器,提高系统的吞吐量和响应速度。
  4. 动静分离:nginx 可以根据请求的静态性或动态性,将请求分别分配给静态服务器和动态服务器,实现动静分离。
  5. 安全:nginx 可以配置为 SSL 服务器,提供安全的 HTTPS 服务,支持 SSL 证书的签发和验证。

2、Nginx的作用

Nginx 反向代理是一种服务器配置,充当了客户端和源服务器之间的中间人。它接收客户端的请求,并将其转发给源服务器,然后将源服务器的响应返回给客户端。以下是一些 Nginx 反向代理的作用:

  1. 负载均衡:Nginx 可以将客户端的请求分发到多个源服务器上,以实现负载均衡。这可以提高系统的性能和可靠性,因为请求可以在多个服务器之间进行分配,从而减少单个服务器的负载。

  2. 提高安全性:反向代理可以隐藏源服务器的真实 IP 地址和端口,使其不直接暴露在互联网上。这样可以增加源服务器的安全性,减少被攻击的风险。

  3. 缓存静态资源:Nginx 可以缓存静态资源(如图像、文件等),并在下次请求时直接提供给客户端,而不必再次从源服务器获取。这可以减少源服务器的负载,并提高系统的性能。

  4. 实现 SSL 加密:Nginx 可以作为 SSL 终端,处理客户端和反向代理之间的 SSL 连接。这样,源服务器无需处理 SSL 加密和解密,从而简化了源服务器的配置。

  5. 访问控制和过滤:Nginx 可以根据规则对请求进行访问控制和过滤,例如限制特定 IP 地址或 URL 的访问。这可以增强系统的安全性和防护能力。

在 Nginx 中,请求的处理流程如下:

  1. 客户端发送请求到 Nginx 服务器。
  2. Nginx 服务器接收请求,并根据配置文件中的规则进行路由。
  3. 如果请求是静态资源,Nginx 会直接将文件返回给客户端。
  4. 如果请求是动态资源,Nginx 会将请求转发到后端应用服务器(如 Tomcat、Node.js 等)。
  5. 后端应用服务器处理请求,并将响应返回给 Nginx 服务器。
  6. Nginx 服务器将响应返回给客户端。

3、如何配置Nginx以实现反向代理?

要配置 Nginx 以实现反向代理,可以按照以下步骤进行操作:

  1. 打开 Nginx 的配置文件(通常是 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf)。
  2. 在配置文件中添加一个新的虚拟主机,用于指定要反向代理的服务器的信息。可以使用 server 指令来添加虚拟主机。
  3. 配置虚拟主机的监听地址和端口。可以使用 listen 指令指定监听的地址和端口。
  4. 使用 location 指令来指定要反向代理的路径。可以根据实际情况设置不同的路径。
  5. 使用 proxy_pass 指令来指定要反向代理的目标服务器的地址和端口。
  6. 可以根据需要配置其他的反向代理相关的指令,如 proxy_set_headerproxy_cache 等。

例如,以下是一个默认的 Nginx 配置文件反向代理配置示例:

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/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   /usr/share/nginx/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;
    #}
}

总的来说,nginx 是一个高性能、稳定、灵活、模块化的 HTTP 和反向代理服务器,可以根据不同的需求进行配置和扩展,是互联网、移动设备、数据中心等领域的重要工具。Nginx 反向代理提供了一种灵活的方式来管理和优化客户端与源服务器之间的通信,提高系统的性能、可靠性和安全性。

你可能感兴趣的:(nginx,nginx,学习)