文章目录
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_pass
和fastcgi_pass
指令,通过在location
配置块中增加指令就可以实现反向代理功能。
如一个网站用的wordpress
程序,wordpress
是php
语言编写,那么需要通过php
运行环境,可以选择apache
的php
扩展或者php-fpm
环境,主流的选择是php-fpm
,php-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_pass
和fastcgi_pass
可以互相替代使用,不过两者还是有区别的,从名字我们就可以看出来,fastcgi_pass
是用来反向代理fastcgi
协议,proxy_pass
可以代理包括fastcgi
协议在内的其它协议。
例如镜像一个网站,这种情况下就需要proxy_pass
=>
location /{
proxy_pass http://www.baidu.com;
}
总之,proxy_pass
更通用。
(后续待补充)