前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx(2)-创建具有缓存功能的反向代理服务器

Nginx(2)-创建具有缓存功能的反向代理服务器

原创
作者头像
懒人的小脑
修改2019-03-19 10:08:25
1.1K0
修改2019-03-19 10:08:25
举报

承接上一篇文章,在本文中,将上文中的静态资源服务器作为上游服务器,另外搭建一台 Nginx 服务器,作为反向代理服务器。

配置反向代理服务器

上游服务器处理的业务逻辑相对复杂,而且强调开发效率,所以它的性能并不优秀,使用 nginx 作为反向代理后,可以将请求将根据负载均衡算法,分散到多台上游(后端)服务器,这样就实现了架构上的水平扩展,让用户无感知的情况下,添加更多的服务器,来提升性能,即使后端的服务器出现问题,nginx反向代理服务器会转交给正常工作的服务器。

实验架构
实验架构

一般情况下,上游服务器不对外提供访问,修改的方法是,将 server 配置块中的 listen 配置项修改为内部网络地址,修改配置文件后,重启nginx 进程,目的是防止之前打开的端口仍然可以使用。

Nginx实现反向代理的功能由 ngx_http_proxy_module 实现,下面是配置示例:

代码语言:txt
复制
location / {

    proxy\_pass http://localhost:8080;

    proxy\_set\_header Host $host; #当后端还有虚拟主机时,应该返回正确的网页,而不是用户请求不用的 host 都返回相同的内容

    proxy\_set\_header X-Real-IP $remote\_addr;

}

当用户请求"/"的所有 URL请求,都转交配置文件中proxy_pass指定的后端服务器,同时还设置了向后端生成请求报文时新的 header,如定义Host 将用户请求的 host 定义在 header 中,定义 X-Real-IP客户端的 IP 地址。

代码语言:txt
复制
...

upstream webdlib{ #定义上游服务器群组,并自定义名称为 webdlib

       server 172.16.240.140:8080; #上游服务器群组的服务器列表,多台服务器可以选择负载均衡算法

    }

server {

        listen       80 

        server\_name  \_;

        ... ... 

        location / {

            proxy\_pass http://172.16.240.140:8080; #设置上游服务器地址

            proxy\_set\_header Host $host; #添加请求首部 host 名称,由上游服务器处理 host 请求

            proxy\_set\_header X-Real-IP $remote\_addr; #添加客户端真实 IP 地址

            proxy\_set\_header X-Forward-For $proxy\_add\_x\_forwarded\_for;

        }
由反向代理服务器响应的请求
由反向代理服务器响应的请求

配置缓存服务器

通常只有动态请求,也就是不同的用户访问同一个 url内容不相同时,请求才会交由上游处理,在页面中,一部分内容在一段时间不会发生变化,为了减轻上游服务器的压力,将上游服务器返回的内容,缓存在反向代理服务器中保存一段时间,如几个小时或一天,在缓存时间内,即使上游服务器内容发生变化,也会被忽视,将缓存的内容向浏览器发送。使用缓存会提供站点的响应性能。

首先要在 http 配置块下,使用proxy_cache_path定义缓存文件的路径、文件命名方式、命名共享内存及共享内存的空间大小等信息,如proxy\_cache\_path /tmp/nginxcache levels=1:2 keys\_zone=my\_cache:10m max\_size=10g inactive=60m use\_temp\_path=off;

缓存的使用方法则是,在需要进行缓存url 路径下,添加 proxy_cache、proxy_cache_key、proxy_cache_valid。

  • proxy_cache my_cache:指定缓存共享内存的命名
  • proxy_cahce_key $host$uri$is_args$args:在共享内存中设置的 key 的值,这里将 host,uri 等作为 key 值
  • Proxy_cache_valid 200 304 302 1d :指定的响应不返回缓存

下面是关于缓存的配置文件节选:

代码语言:txt
复制
...

http {

    ...

    proxy\_cache\_path /tmp/nginxcache levels=1:2 keys\_zone=my\_cache:10m max\_size=10g inactive=60m use\_temp\_path=off;

    ...

    server {

        ...

        location / {

            proxy\_pass http://172.16.240.140:8080;

            proxy\_set\_header Host $host;

            proxy\_set\_header X-Real-IP $remote\_addr;

            proxy\_set\_header X-Forward-For $proxy\_add\_x\_forwarded\_for;



            proxy\_cache my\_cache;



            proxy\_cache\_key $host$uri$is\_args$args;

            proxy\_cache\_valid 200 304 302 1d;

        }

    }

}

总结

首先配置反向代理服务器,需要使用 proxy_pass设置上游服务地址、使用 proxy_set_header设置向后端发送请求的 header诸如客户端的 IP 地址、请求的 host。

配置缓存服务器,首先要设置缓存的名称,内存空间名称等信息,然后在需要进行缓存的 URL 路径下,启用缓存,进行缓存的设置诸如缓存的名称、缓存的 key 等。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置反向代理服务器
  • 配置缓存服务器
  • 总结
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档