7nginx的upstream及fastcgi模块应用

Posted Hi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7nginx的upstream及fastcgi模块应用相关的知识,希望对你有一定的参考价值。

ngx_http_proxy_module, ngx_http_upstream_module

 

ngx_http_proxy_module:实现反向代理及缓存功能

proxy_pass http://{SERVER_IP|UPSTREAM_NAME}/uri

 

proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size];

proxy_cache zone_name;          //缓存名称

proxy_cache_valid [code] time;  //指明不同响应码内容的缓存时长

proxy_cache_method              //只对哪些方法获取的资源进行缓存,一般使用get

proxy_cache_use_stale error timeout ...   //是否使用过期的缓存进行响应

proxy_cache_min_uses             //某资源至少响应请求多少次后才被缓存下来

 

proxy_cache_bypass string: 设置在何种情形下nginx将不从cache取数据的;比如邮件

例如:$cookie_nocache、$arg_nocache 、$http_authorization

proxy_set_header

ngx_http_upstream_module:定义服务器组

可以调用服务器组反向代理有:proxy_pass, fastcgi_pass, uwsgi_pass, 

upstream name {

server address [parameters];

ip_hash;    //基于源地址绑定

}

 

 

nginx(2)

SNAT模式的大量Client 

基于sticky实现session绑定:

cookie

route

learn () 

least_conn: 调度方法,最少连接;

 

 

 

health_check;

 

建议:关闭访问日志;

 

 

 

自定义响应首部:

 

add_header X-Via $server_addr;

 

add_header X-Cache $upstream_cache_status;

 

 

 

LNMP

 

fpm

 

 

 

编辑/etc/nginx/fastcgi_params,将其内容更改为如下内容:

 

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;

 

fastcgi_param  SERVER_SOFTWARE    nginx;

 

fastcgi_param  QUERY_STRING       $query_string;

 

fastcgi_param  REQUEST_METHOD     $request_method;

 

fastcgi_param  CONTENT_TYPE       $content_type;

 

fastcgi_param  CONTENT_LENGTH     $content_length;

 

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

 

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

 

fastcgi_param  REQUEST_URI        $request_uri;

 

fastcgi_param  DOCUMENT_URI       $document_uri;

 

fastcgi_param  DOCUMENT_ROOT      $document_root;

 

fastcgi_param  SERVER_PROTOCOL    $server_protocol;

 

fastcgi_param  REMOTE_ADDR        $remote_addr;

 

fastcgi_param  REMOTE_PORT        $remote_port;

 

fastcgi_param  SERVER_ADDR        $server_addr;

 

fastcgi_param  SERVER_PORT        $server_port;

 

fastcgi_param  SERVER_NAME        $server_name;

 

 

 

 

 

LNAMP

 

 

 

LNMP, fastcgi_cache

 

 

 

 

 

练习:

 

(1) root为同一路径;

 

(2) root为不同的路径;

 

location .php$ {

 

root /web/app/wp;

 

}

 

 

 

location / {

 

root /web/htdocs;

 

}

 

 

 

如何解决问题?

 

 

 

(3) fpm server为另一主机;

 

location .php$ {

 

fastcgi_pass fastcgi://172.16.100.9:9000;

 

}

 

 

 

location / {

 

root /web/htdocs;

 

}

 

 

 

总结:

 

cache:

 

proxy_cache

 

fastcgi_cache

 

 

 

练习:

 

使用nginx反向代理(rr调度)用户请求至两个以上的后端LAMP(按标准路径部署的有pma);

 

(1) 手动更新所有节点上的pma至新版本;

 

(2) 写脚本实现如上过程;

 

 

 

 

 

回顾:nginx upstream, fastcgi

 

upstream name {

 

server

 

server

 

 

 

}

 

wrr

 

ip_hash|least_conn|sticky

 

 

 

fastcgi_pass fastcgi://

 

 

 

LNMMP: Memcached

 

 

 

HAProxy:

 

 

 

 

 

 

 

 

 

 

 

web arch: haproxy

 

mode: http, tcp (https, mysql)

 

 

 

HAProxy:

 

代理(http): 掮客(broker)

 

正向代理:

 

反向代理:

 

 

 

代理作用:web缓存(加速)、反向代理、内容路由(根据流量及内容类型等将请求转发至特定服务器)、转码器;

 

 

 

在代理服务器上添加Via首部;

 

 

 

缓存的作用:

 

减少冗余内容传输;

 

节省带宽、缓解网络瓶颈;

 

降低了对原始服务器的请求压力;

 

降低了传输延迟;

 

 

 

HAProxy: 只是http协议的反向代理,不提供缓存功能;但额外支持对tcp层对基于tcp通信的应用做LB;

 

 

 

nginx:

 

server {

 

 

 

}

 

 

 

server {

 

location ~* .php$ {

 

proxy_pass

 

}

 

 

 

location / {

 

 

 

}

 

}

 

 

 

 

 

upstream {

 

leastconn

 

server

 

server

 

}

 

 

 

upstream {

 

 

 

}

 

 

 

haproxy:

 

frontend

 

use_backend

 

default_backend

 

backend

 

balancer

 

server

 

server

 

 

 

listen:

 

server

 

 

 

default

 

 

 

配置文件:haproxy.cfg

 

全局配置

 

代理配置

 

 

 

 

 

回顾:

 

HAProxy:

 

http协议反向代理

 

tcp层的LB

 

 

 

特性:event-driven, ebtree

 

 

 

配置:/etc/haproxy/haproxy.cfg

 

/usr/sbin/haproxy

 

 

 

CentOS 6: /etc/rc.d/init.d/haproxy

 

CentOS 7: haproxy.service

 

 

 

配置分为两段:

 

global

 

配置参数:log, maxconn, ...

 

proxies

 

defaults, frontend, backend, listen

 

 

 

示例:

 

frontend main *:80

 

default_backend websrvs

 

 

 

backend websrvs

 

balance roundrobin

 

server web1 172.16.100.68 check

 

server web2 172.16.100.69 check

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

nihoa 

 

以上是关于7nginx的upstream及fastcgi模块应用的主要内容,如果未能解决你的问题,请参考以下文章

Nginx自学手册 upstream及fastcgi

Nginx学习日记第五篇 -- upstream及fastcgi

【NGINX入门】8.Nginx的upstream 模块及参数测试

Nginx中upstream模块实现PHP服务器的负载均衡

upstream 模块

nginx 反向代理核心模块upstream