Nginx反向代理
作用:调度器。实现web负载均衡,web高可用,但还未达到集群高可用(lvs keepavlived)
Nginx反向代理语法格式
http{ upstream webs { //定义源服务器组(集群)
server 192.168.2.100;
server 192.168.2.200; }
server {listen 80;
server_name www.a.com; //Web主机名
location / {
proxy_pass http://webs; //调用集群
root html;} } }
Nginx负载分配方式(目前支持4种)
轮询(默认的):逐一循环调度
weight:指定轮询几率,权重值和访问比率成正比,默认权重为1
ip_hash:根据客户端IP分配固定的后端服务器(相同客户端访问相同服务器)
服务器组主机状态
down:表示当前server暂时不参与负载(宕机)
max_fails:允许请求失败的次数(默认为1)
fail_timeout:max_fails次失败后,暂停提供服务的时间
backup:备份服务器
server 172.16.0.100 max_fails=1 fail_timeout=30;
//定义后端服务器,最大失败次数,失败后,停同多少秒
server 172.16.0.201 weight=3; //定义权重,权重越大,访问量越多,此处连续访问3次
server 172.16.0.202 down; //宕机的服务器
server 172.16.0.203 backup; //备用服务器
示例:Nginx反向代理,实现如下功能:
后端Web服务器两台,可以使用httpd实现;Nginx采用轮询的方式调用后端Web服务器
两台Web服务器的权重要求设置为不同的值;最大失败次数为1,失败超时时间为30秒
步骤一:部署实施后端Web服务器
1)部署后端Web1服务器 [root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd
2)部署后端Web2服务器 [root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo "192.168.2.200" > /var/www/html/index.html
[root@web2 ~]# systemctl restart httpd
步骤二:配置Nginx服务器,添加服务器池,实现反向代理功能
[root@Proxy conf]# cp nginx.conf.default nginx.conf //还原配置文件
1)修改/usr/local/nginx/conf/nginx.conf配置文件
[root@Proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {.. ..
upstream webserver {server 192.168.2.100;
server 192.168.2.200; }
server {listen 80;
server_name www.tarena.com;
location / {proxy_pass http://webserver;}} //调用集群
2)重启nginx服务 [root@Proxy ~]# /usr/local/nginx/sbin/nginx –s reload
3)使用浏览器访问代理服务器测试轮询效果
[root@client ~]# curl http://192.168.4.5 //使用该命令多次访问查看效果
注意:关闭防火墙
步骤三:配置upstream服务器集群池属性
1)设置失败次数,超时时间,权重
[root@Proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {.. ..
upstream webserver {server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10; }
server {listen 80;
server_name www.tarena.com;
location / { proxy_pass http://webserver; }}
2)重启nginx服务 [root@Proxy ~]# /usr/local/nginx/sbin/nginx –s reload
3)使用浏览器访问代理服务器测试轮询效果
[root@client ~]# curl http://192.168.4.5 //使用该命令多次访问查看效果
4)设置相同客户端访问相同Web服务器
[root@Proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {.. ..
upstream webserver {ip_hash; //相同的客户端找相同的服务器
server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10; }
.. ..
server {listen 80;
server_name www.tarena.com;
location / {proxy_pass http://webserver;}}
5)重启nginx服务 [root@Proxy ~]# /usr/local/nginx/sbin/nginx –s reload
6)使用浏览器访问代理服务器测试轮询效果
[root@client ~]# curl http://192.168.4.5 //使用该命令多次访问查看效果
静态页面——html,mp3,mp4,txt,doc,pdf,doc...
动态页面——java,PHP,python,shell...
语言的难易(从难到易):汇编,c,java,php,python,shell
主流论坛:DiscuzX
###############################################################################
组合:(nginx和httpd)+PHP,python
tomcat+java jboss+java weblogic+java
LAMP,linux /apache /MySQL、MariaDB/ php /(python perl)
LNMP,是主流的企业网站平台之一
L:Linux操作系统 N:Nginx网站服务软件
M:MySQL、MariaDB数据库 P:网站开发语言(PHP、Perl、Python)
用户画像技术