nginx学习笔记


这两篇先看下

nginx的root & index

Nginx之坑:完全理解location中的index,配置网站初始页

反向代理实例

1、实现效果

使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中

nginx 监听端口为 9001,

访问 http://192.168.17.129:9001/a/ 直接跳转到 127.0.0.1:8080

访问 http:// 192.168.17.129:9001/b/ 直接跳转到 127.0.0.1:8081

就是centos7安装两个tomcat,两个webapps下分别有a,b两个文件夹,分别有a,b两个html文件,分别显示8080,8081.

效果如下,物理机输入以下地址分别能访问到这些页面。

2、准备工作 

1.准备好两个tomcat,端口不同,有html文件

2.准备监听端口跳转 

修改config

 service改成如下

    server {
        listen       9001;
        server_name  localhost;

        #匹配任何以 /a/ 开头的地址
        location ~/a/ {
            proxy_pass   http://127.0.0.1:8080;
        }

        location ~/b/ {
            proxy_pass   http://127.0.0.1:8081;
        }

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

配置完,访问后及时url其实是从http://192.168.128.130:9001变成http://127.0.0.1:8080

正向代理

location /whatsapp/ {
    proxy_pass  https://graph.facebook.com/;
    proxy_ssl_server_name on;
    proxy_set_header Host graph.facebook.com;
    proxy_set_header Connection '';
    proxy_http_version 1.1;
    chunked_transfer_encoding off;
    proxy_buffering off;
    proxy_cache off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_cookie_domain graph.facebook.com $server_name;
}   

请求http://ip:端口/whatsapp/v20.0/106540352242922/messages 

会转发到https://graph.facebook.com/v20.0/106540352242922/messages

server {
    listen 8002;
    
    location / {
        proxy_pass https://graph.facebook.com/;
        proxy_set_header Host graph.facebook.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Connection '';
        proxy_buffering off;
        proxy_cache off;
    }

    location /AI-LINE {
        proxy_pass https://api.line.me/;
        proxy_set_header Host api.line.me;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Connection '';
        proxy_buffering off;
        proxy_cache off;
    }
  
location /telegram {
        proxy_pass https://api.telegram.org/;
        proxy_set_header Host api.telegram.org;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Connection '';
        proxy_buffering off;
        proxy_cache off;
    } 
 
}

上面这个也可以实现,实现监听http://127.0.0.1:8002/whatapp转到 
https://graph.facebook.com/whatapp

下面这个

负载均衡

1、实现效果

(1)浏览器地址栏输入地址 http://192.168.128.130/a/a.html,负载均衡效果,平均 8080

和 8081 端口中

2、准备工作

(1)准备两台 tomcat 服务器,一台 8080,一台 8081

(2)在两台 tomcat 里面 webapps 目录中,创建名称是 a 文件夹,在a 文件夹中创建

页面 a.html,用于测试

3、在 nginx 的配置文件中进行负载均衡的配置

以下用的是轮询方式

轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。

#上游配置    
upstream myserver{
            server 192.168.128.130:8080;
            server 192.168.128.130:8081;
        }

    server {
        listen      80;
        server_name  192.168.128.130;

        location /{
            #跳转的是上面我们的上游地址
            proxy_pass   http://myserver;
        }

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

4、测试

 发现每次访问都会去不同的服务器。

nginx 分配服务器策略

第一种 轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

第二种 weight

weight 代表权重默认为 1,权重越高被分配的客户端越多

 

第三种 ip_hash

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,解决session共享问题

 

第四种 fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

 

动静分离

服务端接收来自客户端的请求中,有一部分是静态资源的请求,例如html,css,js和图片资源等等,有一部分是动态数据的请求。因为tomcat处理静态资源的速度比较慢,所以我们可以考虑把所有静态资源独立开来,交给处理静态资源更快的服务器例如nginx处理,而把动态请求交给tomcat处理。
如下图所示,我们在机器上同时安装了nginx和tomcat,把所有的静态资源都放置在nginx的webroot目录下面,把动态请求的程序都放在tomcat的webroot目录下面,当客户端访问服务端的时候,如果是静态资源的请求,就直接到nginx的webroot目录下面获取资源,如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给tomcat进行处理,这样就实现了动静分离,提高了服务器处理请求的性能。

nginx常见错误

413 Request Entity Too Large 

1. 调整 client_max_body_size 参数

修改 Nginx 配置文件,增加或调整 client_max_body_size 参数,设置允许的最大请求体大小。你可以在 httpserverlocation 块中设置该参数。

http {
    client_max_body_size 20M;
    # 其他配置...
}

server {
    listen 8002;
    
    location / {
        client_max_body_size 20M;  # 允许最大20MB的请求体
        proxy_pass http://your_backend_server;
        # 其他配置...
    }
}

上述配置中的 client_max_body_size 20M; 表示允许的最大请求体为 20MB。

2. 重启nginx

nginx -s reload

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值