Nginx教程之反向代理教程

网站建设 2021-03-281187℃ 0 0

nginx作为web服务器一个重要的功能就是反向代理。

当然你也可以使用nginx配置正向代理,本是介绍如何配置nginx的反向代理。

nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。

什么是反向代理服务器
反向代理功能是nginx的三大主要功能之一(静态web服务器、反向代理、负载均衡)。nginx一般同时做为静态web服务器和反向代理服务器,做为web服务器访问静态文件图片、css、js、html等文件,做为反向代理服务器把请求发给后端业务处理服务,如果有多个后端处理节点,会配置负载均衡功能。

反向代理服务器是一种代理服务器,用于管理从外部网络到内部网络的连接或任何特定请求。它保护、路由和管理从外部网络到内部网络、Web服务器或专用网络的流量。

外网客户机:我们平时打开浏览器输入网址访问www.vvars.com的场景中,我们的笔记本就可以理解为一个外网客户机。

nginx反向代理服务:浏览器输入网址并回车后,会发起一个http请求给nginx(反向代理服务器),这个请求如果是访问静态文件,那么nginx作为web服务器直接返回请求的内容,如果是访问的后台服务逻辑,那么nginx把请求转发给后端的服务处理。

内网web服务:后端的服务可以是很多种类型,LNMP环境下的php-fpm进程,Java环境下的tomcat、jetty等容器,通过程序逻辑处理http请求,生成html页面或者json串返回给客户端。对于小型应用,后端服务可以和nginx部署在同一台机器上。

反向代理服务器的好处
nginx反向代理重要的作用是配合upstream实现负载均衡。

同时增加安全性,客户端不能直接访问后端服务,多了一个中间的屏障。

提升性能,通过异步非阻塞的方式把请求传给后端,提升了并发处理能力。

也可利用缓存、压缩响应提高响应速度。

nginx如何配置反向代理
nginx反向代理不需要编译额外的模块,默认自带proxy_pass和fastcgi_pass指令,通过在location配置块中增加指令就可以实现反向代理功能。

以www.vvars.com为例,这个网站用的typecho程序,typecho是php语言编写,那么需要通过php运行环境,可以选择nginx的php扩展或者php-fpm环境,主流的选择是php-fpm,php-fpm设置为Unix socket模式或者ip:端口模式 。

Unix socket后端服务配置

server {
    listen 80;
    server_name www.vvars.com vvars.com;

    location /app {
       fastcgi_pass  unix:/tmp/php-cgi.sock;
    }
}

ip端口后端服务配置

server {
    listen 80;
    server_name www.nginx.cn nginx.cn;

    location /app {
       proxy_pass http://127.0.0.1:8080;
    }
}

proxy_pass和fastcgi_pass区别
对于上面介绍的两种情况下proxy_pass和fastcgi_pass可以互相替代使用,不过两者还是有区别的,从名字我们就可以看出来,fastcgi_pass是用来反向代理fastcgi协议,proxy_pass可以代理包括fastcgi协议在内的其它协议。

例如镜像一个网站,这种情况下就需要proxy_pass:

location /{
    proxy_pass https://www.vvars.com;
}
评论 (0)

评论已关闭

友情链接
Top