2020/01/07 05-Nginx反向代理
nginx可以做web服务器,反向代理服务器
如何提供反向代理功能
异构代理就是前端的协议和后面服务的协议不一致
可以先实现同构的服务器,两端都是http的协议
**
RS2代表后端服务器**
把17作为反向代理服务器,8.7访问到17代理至27
访问/跟的时候调度到27
就转发到RS2上
也可以选择性的调度
安装这个可以支持PHP
apache走的协议还是http,这样就还是同构的
之前安装的PHP并不是独立软件,还是个相当于apache的小模块,只是扩展而已
如果有专门的PHP程序服务器,但是要把请求转出来就不一样了,这样的请求协议是PHP的,
这个模块放到了HTTPd下,说明就不是一个独立程序,这是依附apache小模块,让它具有处理PHP程序的能力
nginx不能处理PHP程序,之能交给Apache或者交给php服务器来处理
之前修改了httpd的工作模式
worker模型兼容性差,改回原来的prefork
php程序要想被支持,不能worker模型,只能prefork
写一个PHP程序
直接访问可以
现在要nginx收到请求转发到后端服务器上
增加一台主机37地址的
clientIP是7,nginx调度器是17,后端RS是27,37
27处理动态程序,37处理静态页面,访问PHP就往上面的调度,访问静态就往37调度,这样动静分离
访问PHP就转发给27,就需要用到正则表达式,PHP后缀的
-t查看错误,不能有URI,正则表达式匹配是不允许的
~ 不区分大小写*
多了个斜线。现在应该可以了
调度成功,这就是动静分离
现在是基于同构的协议
如果跑的是PHP服务器,用的是fastcgi协议,也会监听端口,9000端口,
在37上单独安装PHP-FPM软件包,是专门的PHP独立服务器
这是独立的服务
监听的地址和端口
这样才可以接受远程用户访问
注释掉,不然只允许127.0。0.1的地址访问
启动服务
建立一个代码放到目录里
需要在服务器上创建反向代理功能,有专门的模块
这里有很多参数是和fastcgi进行交互的,两种不同的协议肯定要传递参数
修改反向代理服务器,针对后面的PHP服务器,协议是fastcgi,包含的参数就是上面看到的文件里的参数
后端服务器认为代理在访问,不是真实的客户端访问
只有访问PHP的时候才代理,不访问就还是往正常/data/asite下去访问
确实访问到了
刚才只是反向代理,但现在还没实现调度
需要用到upstream模块
范例upstream +取的名称
最终调度的服务器
下面调度服务器的地址 rs
server格式一般都是ip地址加端口号
修改主配置文件
默认调度算法wrr,这里只是定义了将来会用的服务器列表
确实有效果
停止一台后端机器
就不往宕机的机器调度了
ip_hash就是根据源地址做hash运算,只要是同一个地址来的请求就往同一台机器上调度
第一次没有连接过的用户用权重调度,已经链接过的用hash运算调度
可以根据请求url调度
根据用户请求报文中的算法来调度
nginx内置有很多变量
完整的url路径包括参数