nginx的upstream和fast-cgi的应用、

xiaoxiao2021-02-27  221

接着上次总结的nginx的反向代理继续总结。

总的upstream的配置方法一共有如下几种

官方网址: http://nginx.org/en/docs/http/ngx_http_upstream_module.html

根据官网上的介绍,upstream模块的样例配置。

    upstream backend {         server nginx-2 weight=5;         server 127.0.0.1:8080       max_fails=3 fail_timeout=30s;         server unix:/tmp/backend3;                    server nginx-3  backup;    } 

weight是权重, max_fails代表失败三次就被设置为失效,当到默认时间已过,才会被重新设置为有效。

fail_timeout是指超过30s未响应就是失败

基于ip地址的负载均衡,类似于LVS的sh。

upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; server backend3.example.com down; }

比ip_hash更高级的基于cookie的负载均衡。

sticky需要提前配置 装nginx-sticky-module-1.1.tar.gz

    upstream backend {     server nginx-2;     server nginx-3;              sticky cookie srv_id expires=1h domain=.nginx.lol path=/; }   

方法二:基于route的

map $cookie_jsessionid $route_cookie { ~.+\.(?P<route>\w+)$ $route; } map $request_uri $route_uri { ~jsessionid=.+\.(?P<route>\w+)$ $route; } upstream backend { server backend1.example.com route=a; server backend2.example.com route=b; sticky route $route_cookie $route_uri; } 观察upstream中的命中状态。 在server中添加add_header         add_header X-Via    $server_addr;         add_header X-Cache  $upstream_cache_status; 这样的话。返回给客户端的响应报文会多两个字段 [root@example1 nginx]# curl -I nginx-1/forum/ubuntu.jpg HTTP/1.1 200 OK Server: nginx/1.12.0 Date: Tue, 06 Jun 2017 08:53:20 GMT Content-Type: image/jpeg Content-Length: 527050 Connection: keep-alive Last-Modified: Sat, 24 Dec 2016 06:47:37 GMT ETag: "585e1a09-80aca" X-Via: 192.168.30.137 X-Cache: HIT Accept-Ranges: bytes 可以写fast-cgi的反向代理。是为了向后端代理PHP之类的动态语言。 首先要安装php-fpm,并启动php-fpm。使之监听在9000端口上。 再更改/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; 启用nginx的fast-cgi。         location ~ \.php$ {             root           html;             fastcgi_pass   127.0.0.1:9000;             fastcgi_index  index.php;             fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;             include        fastcgi_params;         } 同样fastcgi的运行内容也可以去缓存。 在http中定义 ...     proxy_cache_path    /cache/nginx/    levels=1:2 max_size=20m inactive=5m  keys_zone=mycache:32m;     fastcgi_cache_path  /cache/fastcgi/  levels=1:2 max_size=1g  inactive=10m keys_zone=fcgicache:10m; ... 在location中定义。       location ~ \.php$ {             fastcgi_cache  fcgicache;             fastcgi_pass   nginx-2:9000;             fastcgi_index  index.php;             fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;             include        fastcgi_params;         }

nginx的fastcgi还可以去做一些限制,如fastcgi_limit_rate

转载请注明原文地址: https://www.6miu.com/read-11938.html

最新回复(0)