首页 > 其他分享 >upstream和proxy模块

upstream和proxy模块

时间:2023-02-10 16:14:30浏览次数:49  
标签:log conf domainsite01 server nginx proxy 模块 upstream root

nginx负载均衡-upstream和proxy模块(1)

Cloud研习社 Cloud研习社 2023-01-10 07:31 发表于北京 收录于合集 #一站式教程195个 #云计算148个 #计算机137个 #nginx37个 #负载均衡8个 图片图片

教程每周二、四、六更新

图片

前面完成了负载均衡的搭建,但是只是实现了简单的功能。接下来我们就来详细了解和负载均衡相关的两个模块:ngx_http_upstream_module和ngx_http_proxy_module。

带host字段转发

我们先调整web01和lnmp(10.0.0.31)主机的环境(可以参考“基于域名的虚拟主机”章节):

# 修改配置文件
[root@web01 nginx]# cat /etc/nginx/conf.d/domainsite.conf
server {
    listen 80;
    server_name domainsite01.a.com;
    location / {
        root /data/webpage/domainsite01;
        access_log /var/log/nginx/domainsite01.access.log main;
        error_log /var/log/nginx/domainsite01.error.log warn;
    }
}
server {
    listen 80;
    server_name domainsite02.a.com;
    location / {
        root /data/webpage/domainsite02;
        access_log /var/log/nginx/domainsite02.access.log main;
        error_log /var/log/nginx/domainsite02.error.log warn;
    }
}

# 重启nginx以后测试一下效果:
[root@web01 log]# curl domainsite01.a.com
domainsite01 for blog
[root@web01 log]# curl domainsite02.a.com
domainsite02 for news
[root@web01 log]# curl 10.0.0.14
web01

我们再改一下lnmp(10.0.0.31)服务器的nginx配置:

[root@localhost ~]# mkdir -p /data/webpage/domainsite01
[root@localhost ~]# mkdir -p /data/webpage/domainsite02

[root@localhost ~]# echo "domainsite01 for blog" > /data/webpage/domainsite01/index.html
[root@localhost ~]# echo "domainsite02 for news" > /data/webpage/domainsite02/index.html

[root@localhost ~]# cat /etc/nginx/conf.d/domainsite.conf
server {
    listen 80;
    server_name domainsite01.a.com;
    location / {
        root /data/webpage/domainsite01;
        access_log /var/log/nginx/domainsite01.access.log main;
        error_log /var/log/nginx/domainsite01.error.log warn;
    }
}
server {
    listen 80;
    server_name domainsite02.a.com;
    location / {
        root /data/webpage/domainsite02;
        access_log /var/log/nginx/domainsite02.access.log main;
        error_log /var/log/nginx/domainsite02.error.log warn;
    }
    
    
[root@localhost conf.d]# mv default.conf wordpress.conf.bak

# 修改主配置文件
[root@localhost ~]# cat /etc/nginx/nginx.conf
......
http {
......
    include /etc/nginx/conf.d/*.conf; # 修改这一行
}

[root@localhost conf.d]# mv default.conf.bak default.conf
[root@localhost conf.d]# mv lb.conf lb.conf.bak

# 重启nginx以后测试一下效果:
[root@localhost conf.d]# curl domainsite01.a.com
domainsite01 for blog
[root@localhost conf.d]# curl domainsite02.a.com
domainsite02 for news
[root@localhost conf.d]# curl 10.0.0.31
lnmp

接下来修改负载均衡服务器的配置:

[root@lb01 ~]# cat /etc/nginx/conf.d/lb01.conf
upstream backend {
    server 10.0.0.14    weight=1;
    server 10.0.0.31    weight=1;
}

server {
    listen 80;
    server_name domainsite01.a.com;
    location / {
        proxy_pass http://backend;
    }
}

server {
    listen 80;
    server_name domainsite02.a.com;
    location / {
        proxy_pass http://backend;
    }
}

重启nginx后:

[root@lb01 ~]# curl domainsite01.a.com
web01
[root@lb01 ~]# curl domainsite01.a.com
lnmp
[root@lb01 ~]# curl domainsite02.a.com
web01

我们发现,无论怎么请求,返回的结果都和直接使用IP地址请求的结果一样。这是有因为负载均衡收到请求再去后端服务器请求数据的时候,没有把我们请求的域名带过去,而只是用IP地址去请求,如果希望负载均衡通过使用我们提供的域名请求后端服务的话,需要加入proxy_set_header 选项:

[root@lb01 ~]# cat /etc/nginx/conf.d/lb01.conf
upstream backend {
    server 10.0.0.14    weight=1;
    server 10.0.0.31    weight=1;
}

server {
    listen 80;
    server_name domainsite01.a.com;
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host; # $host就是请求报文头中host字段的值
    }
}

server {
    listen 80;
    server_name domainsite02.a.com;
    location / {
        proxy_pass http://backend;
      proxy_set_header Host $host; # $host就是请求报文头中host字段的值
    }
}

[root@lb01 ~]# systemctl restart nginx
[root@lb01 ~]# curl domainsite01.a.com
domainsite01 for blog # 我们看到返回了对应的内容
[root@lb01 ~]# curl domainsite02.a.com
domainsite02 for news # 我们看到返回了对应的内容

 


 

雷哥开通了抖音(云计算雷哥)和微信视频号,求关注!!!和大家一起学习 技术!

图片

推荐阅读

 

《一站式教程之集群架构》:

LNMP - FastCGI

部署LNMP(1)

部署LNMP(2)- 配置nginx

部署LNMP(3)- 配置mysql

验证wordpress

nginx负载均衡-概述

nginx负载均衡-部署

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社 为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等 179篇原创内容 公众号

图片

 

收录于合集 #一站式教程  195个 上一篇nginx负载均衡-部署下一篇nginx负载均衡-upstream和proxy模块(2) 阅读 108    

标签:log,conf,domainsite01,server,nginx,proxy,模块,upstream,root
From: https://www.cnblogs.com/cherishthepresent/p/17109299.html

相关文章

  • 好客租房153-地图找房模块功能分析
    ......
  • 基于 `CommonJS` 谈谈前端模块化
    基于CommonJS谈谈前端模块化前端模块化的内容贯穿我们平时的开发工作,最早的AMD等模块化组织方式现在已经很少使用,本课程基于目前最常见的CommonJS(以下简称为CMJ)出......
  • MDS100-16-ASEMI电机专用模块MDS100-16
    编辑:llMDS100-16-ASEMI电机专用模块MDS100-16型号:MDS100-16品牌:ASEMI封装:MDS正向电流:100A反向电压:1600V引脚数量:5芯片个数:6芯片尺寸:MIL漏电流:>10ua恢复时间:>500ns浪涌电流:12......
  • MDS100-16-ASEMI电机专用模块MDS100-16
    编辑:llMDS100-16-ASEMI电机专用模块MDS100-16型号:MDS100-16品牌:ASEMI封装:MDS正向电流:100A反向电压:1600V引脚数量:5芯片个数:6芯片尺寸:MIL漏电流:>10ua恢复时间:>500......
  • MDS75-16-ASEMI工业电机模块MDS75-16
    编辑:llMDS75-16-ASEMI工业电机模块MDS75-16型号:MDS75-16品牌:ASEMI封装:MDS特性:整流模块正向电流:75A反向耐压:1600V恢复时间:>500ns引脚数量:5芯片个数:6芯片尺寸:MIL......
  • bat win设置proxy
    设置代理@echooffecho开始设置IE代理上网regadd"HKCU\Software\Microsoft\Windows\CurrentVersion\InternetSettings"/vProxyEnable/tREG_DWORD/d1/fre......
  • python模块的name属性
    一个模块被另一个程序第一次引入时,其主程序将运行。1、如果想在模块被引入时,模块中的某一程序块不执行,可以用name属性来使该程序块仅在该模块自身运行时执行。2、每个模块都......
  • 《Terraform 101 从入门到实践》 第三章 Modules模块化
    《Terraform101从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。模块的概念模块化是Terrafor......
  • ansible的部署和命令模块
    一、ansible的概述1、ansible简介Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们......
  • 模块
    ​素数:intprime(intn)//验证素数{inti,x,t;t=(int)(sqrt(n));for(i=2;i<=t;i++)if(n%i==0)return1;return0;}......