美文网首页
Nginx浅识

Nginx浅识

作者: 菜园小饼zxy | 来源:发表于2021-02-22 19:11 被阅读0次

    一、Nginx是什么?

    Nginx是一款轻量级的Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
    官网手册链接

    静态HTTP服务器

    首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。
    配置:

    server {
        listen 80; # 端口号
        location / {
            root /usr/share/nginx/html; # 静态文件路径
        }
    }
    

    反向代理服务器

    nginx的一种常用用法是将其设置为代理服务器。客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。

     server {
            listen       80;
            server_name  www.helloworld.com;//域名
            client_max_body_size 1024M;
            location / {
             proxy_pass   http://192.168.1.11:4500; //应用服务器http地址,即域名直接访问的地址
            }
    

    以上介绍了正向代理和反向代理的用途,nginx还有关于负载均衡和动静分离的作用。

    动静分离

    运用Nginx的反向代理功能分发请求:所有动态资源的请求交给应用服务器,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器,这样能大大减轻应用服务器的压力

    负载均衡

    负载均衡也是 Nginx常用的一个功能,当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。

    正向代理和反向代理的区别:

    1、正向代理:类似我们想要访问国外的Google服务器,但是由于访问限制,我们需要找一个代理去访问。换句话说,客户端明确知道要访问的服务器的地址,客户端把请求发送给代理,代理转发给服务器,服务器把响应传给代理,最后代理把响应传给客户端。我们可以看到客户端知道服务器是谁,但是服务器并不知道客户端是谁,这就是正向代理,隐藏了客户端的真实信息。

    2、反向代理:类似我们访问淘宝,由于访问量巨大,淘宝会使用许多台服务器(就是分布式服务器)来支持,但是每个客户端的请求到底由哪一台服务器来响应,我们需要一个代理来决定。换句话说,客户端并不知道要把请求发送给哪一台服务器,但是知道发送给哪一个代理,然后代理依据规则(响应时间,负载均衡等)决定把请求转发给哪一台服务器。可以看到,客户端并不知道他访问的服务器是谁,这就是反向代理,隐藏了服务器的真实信息。

    二、根据域名映射不同服务器

    1.配置详解

    根据路径映射不同的服务器,比如通过同一域名下二级路径规则做映射,解决一个域名下实现多服务器访问,来达到路径规则模式下反向代理功能.

    server {
            listen       80;
            server_name  www.helloworld.com;
            client_max_body_size 1024M;
    
            location / {
             proxy_pass   http://192.168.1.11:4500; 
            }
    
           location /proxy/ {
            proxy_pass http://127.0.0.1/aaa/;
            }
            location /proxy/ {
            proxy_pass http://127.0.0.1;
            }
            ...
        }
    

    2.重启nginx

    cd /usr/local/nginx/sbin/
    
    sudo nginx -s reload
    

    3.proxy_pass详解

    在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。

    假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问。

    第一种:

    location /proxy/ {
    proxy_pass http://127.0.0.1/;
    }
    

    代理到URL:http://127.0.0.1/test.html

    第二种(相对于第一种,最后少一个 / )

    location /proxy/ {
    proxy_pass http://127.0.0.1;
    }
    

    代理到URL:http://127.0.0.1/proxy/test.html

    第三种:

    location /proxy/ {
    proxy_pass http://127.0.0.1/aaa/;
    }
    

    代理到URL:http://127.0.0.1/aaa/test.html

    第四种(相对于第三种,最后少一个 / )

    location /proxy/ {
    proxy_pass http://127.0.0.1/aaa;
    }
    

    代理到URL:http://127.0.0.1/aaatest.html

    相关文章

      网友评论

          本文标题:Nginx浅识

          本文链接:https://www.haomeiwen.com/subject/kbmkfltx.html