您的位置:首页 > 运维架构 > Nginx

Linux与云计算——第二阶段Linux服务器架设 第七章:网站WEB服务器架设—Nginx(下)

2016-08-07 11:44 831 查看

[b]Linux与云计算——第二阶段Linux服务器架设[/b]

第七章:网站WEB服务器架设—Nginx(下)

反向代理配置

[1] 普通代理和反向代理

普通代理,forward proxy,是服务于特定用户(比如说一个公司内 / 一个局域网内的客户)以访问非特定的服务;反向代理,reverse proxy,是服务于非特定用户(对于公开互联网服务而言,通常是所有用户)以访问特定的服务。

正向代理中,proxy和client同属一个LAN,对server透明;反向代理中,proxy和server同属一个LAN,对client透明。实际上proxy在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把后出现的那种代理方式叫成了反向代理。[2] 反向代理:Web服务器的经纪人反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。[3] 反向代理的作用保护网站安全:任何来自Internet的请求都必须先经过代理服务器;通过配置缓存功能加速Web请求:可以缓存真实Web服务器上的某些静态资源,减轻真实Web服务器的负载压力;实现负载均衡:充当负载均衡服务器均衡地分发请求,平衡集群中各个服务器的负载压力;[4] 实验环境准备WEB1:后端网页服务器1,IP地址为192.168.96.200,主机名为web01.example.com,启动httpd服务,并提供WEB页面web1的内容。WEB2:后端网页服务器2,IP地址为192.168.96.201,主机名为web01.example.com,启动httpd服务,并提供WEB页面web2的内容。Nginx:前端负载均衡器和反向代理服务器,IP地址为192.168.96.100,主机名为server.example.com。所有实验用机使用CentOS7.2版本,预先Selinux配置为disable状态并关闭了防火墙服务。[5] Nginx反向代理和负载均衡服务器配置模式Nginx的upstream目前支持5种方式的分配1 轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2 weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。例如:upstream bakend { server 192.168.100.104 weight=10; server 192.168.100.105 weight=10; } 3 ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。例如:upstream bakend { ip_hash; server 192.168.100.104:80; server 192.168.100.105:80; } 4 fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。例如:upstream bakend { server 192.168.100.104:80; server 192.168.100.105:80; fair; } 5 url_hash(第三方)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。例如:upstream backend { server 192.168.100.104:3128; server 192.168.100.105:3128; hash $request_uri; hash_method crc32; 每个设备的状态设置为:1. down 表示单前的server暂时不参与负载2. weight 默认为1.weight越大,负载的权重就越大,根据服务器性能而定3. max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误4. fail_timeout:max_fails次失败后,暂停的时间。5. backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。Nginx支持同时设置多组的负载均衡,用来给不用的server来使用。[6] 配置反向代理和负载均衡upstream webservers { server 192.168.96.200:80 weight=4 max_fails=2 fail_timeout=30s;server 192.168.96.201:80 weight=4 max_fails=2 fail_timeout=30s;} server { listen 80; server_name localhost; location / { proxy_pass http://webservers; proxy_set_header X-Real-IP $remote_addr; }}注,upstream是定义在server{ }之外的,不能定义在server{ }内部。定义好upstream之后,用proxy_pass引用一下即可。[7] 给Nginx配置备份服务器但大家想一下,如果不幸的是所有服务器都不能提供服务了怎么办,用户打开页面就会出现出错页面,那么会带来用户体验的降低,所以我们能不能像配置LVS是配置sorry_server呢,答案是可以的,但这里不是配置sorry_server而是配置backup。1、将配置文件进行如下修改,增加一个本地的错误报告服务器:server { listen 8080; server_name localhost; root /usr/share/nginx/html/errorpage; index index.html; } upstream backend { server 192.168.1.100:80 weight=4 max_fails=2 fail_timeout=30s; server 192.168.1.101:80 weight=4 max_fails=2 fail_timeout=30s; server 127.0.0.1:8080 backup;}2、然后在网页目录中创建对应的目录的错误文件[root@proxy nginx]# mkdir -pv /usr/share/nginx/html/errorpagemkdir: created directory ‘/usr/share/nginx/html/errorpage’[root@proxy nginx]# echo "sorry" > /usr/share/nginx/html/errorpage/index.html[root@proxy nginx]# cat /usr/share/nginx/html/errorpage/index.htmlSorry1.在WEB1上和WEB2上停止HTTP服务Systemctl stop httpd2.重新在浏览器中刷新页面

2.7 Nginx+PHP-FPM

安装PHP-FPM ( PHP FastCGI Process Manager ) 以便在Nginx中使用PHP脚本

[1] 安装PHPPHP-FPM.

[root@server ~]# yum -y install php php-mbstring php-pear php-fpm

[2] 配置PHP-FPMNginx.

[root@server ~]# vi /etc/php-fpm.d/www.conf# line 39: 修改user = nginx# line 41: 修改group = nginx[root@server ~]# systemctl start php-fpm [root@server ~]# systemctl enable php-fpm[root@server ~]# vi /etc/nginx/nginx.conf# 添加到 "server" 部分 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; }[root@server ~]# systemctl restart nginx

[3] 创建一个测试页面并验证.

[root@client ~]# echo "<?php phpinfo() ?>" > /usr/share/nginx/html/info.php
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐