Nginx反向代理及跨域

1. nginx反向代理配置

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

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

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

2. 什么是反向代理服务器

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

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

2.1 外网客户机

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

2.2 nginx反向代理服务

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

2.3 内网web服务

后端的服务可以是很多种类型,LNMP环境下的php-fpm进程,Java环境下的tomcat、jetty等容器,通过程序逻辑处理http请求,生成html页面或者json字符串返回给客户端。

对于小型应用,后端服务可以和nginx部署在同一台机器上。

3. 反向代理服务器的好处

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

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

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

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

4. nginx如何配置反向代理

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

如一个网站用的wordpress程序,wordpressphp语言编写,那么需要通过php运行环境,可以选择apachephp扩展或者php-fpm环境,主流的选择是php-fpmphp-fpm设置为Unix socket模式或者ip:端口模式 。

4.1 Unix socket后端服务配置

server {
    
    
    listen 80;
    server_name localhost;

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

4.2 ip端口后端服务配置

server {
    
    
    listen 80;
    server_name localhost;

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

5. proxy_pass和fastcgi_pass区别

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

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

location /{
    
    
    proxy_pass http://www.baidu.com;
}

总之,proxy_pass更通用。



(后续待补充)

猜你喜欢

转载自blog.csdn.net/u013946061/article/details/107739583