设为首页 收藏本站
查看: 920|回复: 0

[经验分享] nginx负载均衡,

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-11-12 09:53:22 | 显示全部楼层 |阅读模式
  代理服务器后面有多个web服务器
DSC0000.jpg

  upstream 模块
  dig 命令   域名解析
DSC0001.jpg

  编辑新配置文件
  ip_hash 同一个用户保持在一个机器上
DSC0002.jpg

  不支持去代理https
  ssl 原理
DSC0003.jpg

  https 是加密的传输
  每次传输都是随机的
  生成SSL密钥对
DSC0004.jpg

  生成密钥
DSC0005.jpg

  转换key 去掉密钥密码
  -in 指定密钥 -out 指定输出
DSC0006.jpg

  生成请求文件 名字可以自己定义
DSC0007.jpg

  生成公钥文件 -days 证书日期
DSC0008.jpg

  配置nginx ssl
DSC0009.jpg

  编辑新配置文件 监听端口443
DSC00010.jpg

  创建root 目录
DSC00011.jpg

  检测语法 报错
DSC00012.jpg

  重新编译 需要ssl_module
DSC00013.jpg

  加上ssl_module &&make&& make install
DSC00014.jpg

  重新检测语法没有报错
DSC00015.jpg

  重新启动服务 查看端口多了一个443
DSC00016.jpg

  在root 目录下创建文件
DSC00017.jpg

  证书被标记为不可信任
DSC00018.jpg

  提示访问不安全
DSC00019.jpg

  沃通电子认证买证书
  场景:1台nginx去代理4台apache
  需求:根据不同的请求uri 代理到不同的apache
  nginx的配置文件为:

  • upstream aa.com {
  • server 192.168.0.121;
  • server 192.168.0.122;
  • }
  • upstream bb.com {
  • server 192.168.0.123;
  • server 192.168.0.124;
  • }
  • server {
  • listen       80;
  • server_name  www.abc.com;
  • location ~ aa.php
  • {
  • proxy_pass http://aa.com/;
  • proxy_set_header Host   $host;
  • proxy_set_header X-Real-IP      $remote_addr;
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • }
  • location ~ bb.php
  • {
  • proxy_pass http://bb.com/;
  • proxy_set_header Host   $host;
  • proxy_set_header X-Real-IP      $remote_addr;
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • }
  • }
  nginx代理--根据访问的目录来区分后端的web
  我的需求: 当请求的目录是 /aaa/ 则把请求发送到机器a,当请求的目录为/bbb/则把请求发送到机器b,除了目录/aaa/与目录/bbb/外,其他的请求发送到机器b
  配置文件内容为:

  • upstream aaa.com
  • {
  • server 192.168.111.6;
  • }
  • upstream bbb.com
  • {
  • server 192.168.111.20;
  • }
  • server {
  • listen 80;
  • server_name li.com;
  • location /aaa/
  • {
  • proxy_pass http://aaa.com/aaa/;
  • proxy_set_header Host   $host;
  • proxy_set_header X-Real-IP      $remote_addr;
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • }
  • location /bbb/
  • {
  • proxy_pass http://bbb.com/bbb/;
  • proxy_set_header Host   $host;
  • proxy_set_header X-Real-IP      $remote_addr;
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • }
  • location /
  • {
  • proxy_pass http://bbb.com/;
  • proxy_set_header Host   $host;
  • proxy_set_header X-Real-IP      $remote_addr;
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • }
  • }  说明:
      1 以上配置文件中的 aaa.com 以及 bbb.com 都是自定义的,随便写。
      2 upstream 中的server 可以写多个,例如
  upstream aaa.com
  {
  server 192.168.111.6;
  server  192.168.111.4;
  server  192.168.111.5;
  }
  3 proxy_pass http://aaa.com/aaa/  这里必须要加这个目录,不然就访问到根目录了。
  4 实际上,上述配置文件中, localtion /bbb/ 部分是可以省略掉的,因为后边的 location /  已经包含了/bbb/,所以即使我们不去定义  localtion /bbb/ 也是会访问到 bbb.com 的。
  nginx 代理多台机器 长连接(会话保持)解决问题
  网站使用程序 discuzx3  访问都正常,只有用户登陆存在异常,具体的情况是这样的:
  用户登陆后,会马上显示未登陆,然后刷新一下或者多下又变成了登陆中。
  这个问题很显然是由于session导致,后台有多个web机器,当用户登陆后,会把登陆态session保存到当前web,但是再次发送请求时则会到另一台机器,所以原来的session信息找不到了。解决这个问题有两个思路:

  • 可以把session时时同步到另外的机器。
  •   可以让前端的调度器保持长连接,也就是说某个用户的请求在某一时间段内始终抓发到固定的一台机器上。
      这两种方式,第二种更容易实现。
      使用的是nginx的代理,其中nginx有一种算法支持长连接,具体配置是这样的:

    • upstream test {
    • ip_hash;
    • server 192.168.109.5;
    • server 192.168.109.3;
    • }  关键代码: ip_hash
        这样,nginx会把用户的请求一直转发到后端的某台机器
      http://blog.sina.com.cn/s/blog_72995dcc01016msi.html



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633995-1-1.html 上篇帖子: nginx 配置 ssl 双向证书 下篇帖子: kubernetes 1.11配置使用nginx ingress-ygqygq2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表