Code前端首页关于Code前端联系我们

Nginx教程:主要应用场景(不加载第三方模块可以做什么)

terry 2年前 (2023-09-28) 阅读数 59 #未命名

Nginx不加载第三方模块可以做什么?第三方模块太多,无法一一列举。当然,这篇文章的简介本身可能并不完整。这里根据个人使用情况和知识总结一下。所以还请大家见谅,欢迎留言交流。

Nginx 能做什么?

  1. 反向代理
  2. 负载均衡
  3. HTTP服务器(包括动静分离)
  4. 正向代理

以上是我对Nginx的了解,Nginx不需要依赖第三方模块就可以做到。下面详细说明如何执行每个功能

1。反向代理

反向代理应该是最常见的 Nginx 活动。什么是反向代理?百度百科是这么说的:反向代理方式是指利用代理服务器接收互联网连接请求,然后将请求转发到内网服务器,当客户端请求互联网连接时,从服务器返回结果。目前,代理服务器看起来像反向代理服务器。简单来说,外网无法直接访问真实服务器,所以需要代理服务器。代理服务器可以从外部网络访问,并且与真实服务器位于同一网络环境中。当然也可以是同一个服务器和端口。只是不同。

粘贴下面的简单代码即可实现反向代理 -

server {  
        listen       80;                                                        
        server_name  localhost;                                              
        client_max_body_size 1024M;

        location / {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host:$server_port;
        }
}
Shell

保存配置文件并启动Nginx,这样我们访问localhost时就相当于访问localhost:8080。

2。负载均衡

负载均衡也是Nginx经常使用的功能。负载平衡意味着在多个操作单元之间分配执行,例如 Web 服务器、FTP 服务器、企业关键应用服务器和其他关键任务服务器。等共同完成工作任务。简单来说,如果有两个或两个以上的服务器,则将请求按照规则分发到随机分配的服务器上进行处理。负载均衡配置一般需要并发反向代理配置,通过反向代理跳转到负载均衡。 Nginx 目前支持三种内置的负载均衡策略和两种常用的第三方策略。

1。 RR(默认)

每个请求按照时间顺序一一分配到不同的后端服务器。当后台服务器down宕机时,可以自动排除。

    upstream test {
        server localhost:8080;
        server localhost:8081;
    }
    server {
        listen       81;                                                        
        server_name  localhost;                                              
        client_max_body_size 1024M;

        location / {
            proxy_pass http://test;
            proxy_set_header Host $host:$server_port;
        }
    }
Shell

负载均衡的主要代码是-

    upstream test {
        server localhost:8080;
        server localhost:8081;
    }
Shell

这里配置了2台服务器。当然实际上是一个,只是端口不同,而且没有8081服务器。这意味着它无法访问,但是如果我们访问 http://localhost 就没有问题。默认情况下会跳转到http://localhost:8080。这是因为 Nginx 自动确定服务器的状态。如果服务器开启时无法访问(服务器宕机),则不会跳转到该服务器,所以也避免了服务器宕机影响使用的情况。由于Nginx默认使用RR策略,因此我们不需要任何其他设置。

2。权重

确定轮询的概率。权重与访问比例成正比,当后端服务器性能不一致时使用。比如

    upstream test {
        server localhost:8080 weight=9;
        server localhost:8081 weight=1;
    }
Shell

,那么10次通常只能到808119次 上面的有问题方法,即如果下一个查询到来,请求可能会传播到另一台服务器。如果我们的程序不是无状态的(使用会话来存储数据),这就是一个问题。例如,如果您的会话登录信息被保存,那么当您跳转到其他服务器时,您将需要重新登录。很多时候我们需要客户端只访问一台服务器,所以我们需要使用 iphash。 ,每个iphash请求根据访问IP的哈希结果进行分配,这样每个访问者就可以固定访问后端服务器,可以解决会话问题。

    upstream test {
        ip_hash;
        server localhost:8080;
        server localhost:8081;
    }
Shell

4,公平(第3方)

根据后端服务器响应时间分配请求,并优先考虑响应时间短的请求。

 upstream backend {
        fair;
        server localhost:8080;
        server localhost:8081;
    }
Shell

5、url_hash(第3方)

根据可访问URL的哈希结果拆分请求,使每个URL路由到同一个后端。如果后端被缓存,这会更有效。添加上游主题标签。其他参数,例如重量,不能写入服务器语句。 hash_method 是使用的哈希算法

    upstream backend {
        hash $request_uri;
        hash_method crc32;
        server localhost:8080;
        server localhost:8081;
    }
Shell

以上5种负载均衡适合不同的情况使用,大家可以根据实际情况进行选择。使用哪种策略模式,但是fair和url_hash需要安装第三方模块才能使用。由于本文主要介绍Nginx的能力,因此本文不介绍第三方Nginx模块的安装

3。 HTTP Server

Nginx 这也是一个静态资源服务器。如果只有静态资源,可以使用Nginx作为服务器。同时,静态资源与静态资源的分离,可以通过Nginx来实现,现在也很流行。首先我们看Nginx作为静态资源服务器

    server {
        listen       80;                                                        
        server_name  localhost;                                              
        client_max_body_size 1024M;


        location / {
               root   E:/wwwroot;
               index  index.html;
           }
    }
Shell

这样访问http://localhost Ewww根盘

    server {
        listen       80;                                                        
        server_name  localhost;                                              
        client_max_body_size 1024M;


        location / {
               root   E:/wwwroot;
               index  index.html;
           }
    }
就可以访问默认的目录。如果网站只是静态页面的话,那么可以通过这种方式实现部署。

4。动静分离

动静分离可以让动态网站上的动态网站按照一定的规则区分永久资源和经常变化的资源。划分了动态和静态资源后,我们可以利用静态资源的属性包括缓存操作。这是网站静态处理背后的基本思想。

upstream test{  
       server localhost:8080;  
       server localhost:8081;  
    }  

    server {  
        listen       80;  
        server_name  localhost;  

        location / {  
            root   e:/wwwroot;  
            index  index.html;  
        }  

        # 所有静态请求都由nginx处理,存放目录为html  
        location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {  
            root    e:/wwwroot;  
        }  

        # 所有动态请求都转发给tomcat处理  
        location ~ .(jsp|do)$ {  
            proxy_pass  http://test;  
        }  

        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
            root   e:/wwwroot;  
        }  
    }
Shell

这样我们就可以把HTML、图片、css和js放在www根目录下,而tomcat只负责处理jsp和请求。比如我们的后缀是gif,Nginx默认会从wwwroot获取。将返回当前请求的动态图像文件。当然,这里的静态文件是和Nginx在同一台服务器上的。我们还可以在另一台服务器上使用它,并通过反向代理和负载平衡进行配置。只要我们了解了最基本的流程,很多配置就非常简单了。另外,该位置后面实际上跟着一个正则表达式,所以非常灵活

5。正向代理

正向代理是指客户端和源服务器之间的链路。为了从源服务器获取内容,客户端向代理服务器发送请求并指定目标(源服务器),然后代理服务器将请求转发到源服务器并将结果内容返回给客户端。只有客户端才能使用转发代理。如果你需要使用你的服务器作为代理,你可以使用Nginx来实现转发代理。不过Nginx目前有一个问题,那就是不支持HTTPS。虽然我去百度配置了HTTPS转发代理,但最终发现代理还是无法使用。当然也有可能是我设置错误,所以也希望知道正确方法的同志能够留言解释一下。


    resolver 114.114.114.114 8.8.8.8;
    server {

        resolver_timeout 5s;

        listen 81;

        access_log  e:/wwwrootproxy.access.log;
        error_log   e:/wwwrootproxy.error.log;

        location / {
            proxy_pass http://$host$request_uri;
        }
    }
Shell

resolver是配置了转发代理的DNS服务器,listening是转发代理端口。配置完成后,您可以使用服务器IP+端口号来代理IE或其他代理插件。

Nginx支持热启动,这意味着更改配置文件后,我们可以在不关闭Nginx的情况下使配置生效。当然,我不知道有多少人知道。反正我一开始并不知道这一点,所以我经常杀掉Nginx线程并重新启动它。 。 。 nginx再次读取配置的命令是-

nginx -s reload
Shell

windows下面是

nginx.exe -s reload
Shell

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门