nginx高级应用之upstream与fastcgi模块功能

1.ngx_http_upstream_module群集模块
1)在nginx的主配置的http段添加一下内容:
[cc lang="bash"]
http{
upstream upservers {
server 172.16.249.164 weight=2 ; //weight可以设置权重
server 172.16.0.1;
}
}
[/cc]
2)在nginx的默认default文件中添加如下内容:
[cc lang="bash"]
location /{
#proxy_cache mycache;
#proxy_cache_valid 200 1d;
#proxy_cache_valid 301 302 10m;
#proxy_cache_valid any 1m;
#proxy_cache_use_stale error timeout http_500 http_503 http_504;
proxy_pass http://upservers/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location ~* \.(jpg|txt)$ {
proxy_pass http://upservers;
}
[/cc]
3)重读配置文件,测试访问
[cc lang="bash"]
[root@kali 0]# service nginx reload
[/cc]
http://172.16.249.23/ 访问即可看到是以轮询的方式调度的。
4)自带的健康状态监测功能
当某一节点宕机时,切换至另一节点,上线时会自动切换。
配置方法,在nginx的主配置文件的定义群集部分添加:
[cc lang="bash"]
upstream upservers {
server 172.16.249.164 max_fails=2 fail_timeout=1;
server 172.16.0.1 max_fails=2 fail_timeout=1;
}
[/cc]
4)标记服务器的状态
backup标记为备用状态,设置方法同上。
[cc lang="bash"]
server 172.16.0.1 max_fails=2 fail_timeout=1 server 172.16.0.1 max_fails=2 fail_timeout=1;
;
[/cc]
更新升级之后,再取消备用状态即可。
5)基于sticky实现session绑定
cookie
route
learn()
调度方法:
least_conn:调度方法,最少连接。
keepalive:保持连接。
6)自定义响应首部:
在server段内添加:
[cc lang="bash"]
add_header X-Via $server_addr;
add_header X-Cache $ustream_cache_status;
[/cc]可以在服务器响应头部显示缓存的命中状态
缓存有7种状态:
MISS:缓存没命中
BYASS: 没检查缓存
EXPIRED: 过期
STALE: 腐败的
UPDATING:更新中
REVALIDATED:重新校验
HTI:命中
更多方法查阅:http://nginx.org/en/docs/http/ngx_http_upstream_module.html

2. ngx_http_fastcgi_module模块
fastcgi支持nmp
1)安装php-fpm
Linux中系统的第二张光盘中提供了:php-fpm安装包
[cc lang="bash"]
[root@node1 ~]# yum install php-fpm -y
[/cc]
php的主配置文件:/etc/php-fpm.d/www.conf
2)启动php
[cc lang="bash"]
[root@node1 etc]# service php-fpm start
Starting php-fpm: [ OK ]
[/cc]
3)编辑nginx的配置文件启用支持php
[cc lang="bash"]
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;
}
[/cc]
4)备份配置文件,并编辑其配置文件将内容修改为:
[cc lang="bash"]
[root@node1 nginx]# cp fastcgi_params{,.bak}
[/cc]
[cc lang="bash"]
[root@node1 nginx]# vim fastcgi_params
[/cc]
[cc lang="bash"]
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;
[/cc]
5)在nginx的网站目录添加测试页面,重启php-fpm
[cc lang="bash"]

[/cc]
6)让php跟mysql结合
[cc lang="bash"]
[root@node1 html]# yum install php-mysql
[/cc]
安装完成之后重启php-fpm,在php的测试页面Additional .ini files parsed段可以看到已经把mysql的驱动加载进去了。
7)安装mysql-server
[cc lang="bash"]
[root@node1 html]# yum install mysql-server -y
[/cc]
在测试页面添加mysql连接测试:
[cc lang="bash"]

[/cc]
重启mysqld服务之后,再次访问。
更多方法查阅:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html
3. fsatcgi_cache_path 模块
fsatcgi_cache_path 需要定义在http的内:
[cc lang="bash"]
http{
fastcgi_cache_path /cache/fastcgi/ levels=1:1 keys_zone=fcgicache:10m
inactive=3m max_size=1g;
}
[/cc]
然后在localtion中的fastcgi中调用。
[cc lang="bash"]
fastcgi_cache fcgicache;
fastcgi_cache_valid 200 10m;
fastcgi_cache_valid 302 3m;
fastcgi_cache_valid any 1m;
[/cc]

uxmib


发表评论

登录 后发表评论.