做了一个站点是用nginx 做的负载均衡。后端也是多个nginxserver

遇到了一个问题。当做SSL支持时 前端nginx分发到 后端nginx后就成 http形式了(这样后台php用$_SERVER[HTTPS] == "on" 就无法推断了,但后台还必需要知道这个參数)。假设改成https的话。还需要多个证书。

所以就想让前端nginx 假设是 https 的话给后端传递一个參数。

用在后台来推断和使用。

首先前端nginx的 nginx.conf 文件里 用  proxy_set_header 设置一个參数urlprefix 值为 https(參数名最好避免使用下划线和中划线,下划线的參数会被nginx忽略掉,而中划线的參数会被nginx处理为下划线。为了避免混乱我们干脆就不用这俩个,他爱咋处理咋处理)
例如以下:

location / {

        proxy_pass              http://myserver;

        proxy_set_header        X-Real-IP $remote_addr;

        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header        Host $http_host;

        proxy_set_header        urlprefix https;

    }

然后 后端nginx server 配置中 开启读取header 和 设置php參数

nginx.conf 文件里加入    underscores_in_headers on;

继续

设置php 參数,能够使用$_SERVER["..."]来获取的哦

location ~ \.php$ {

        root           htmll;

        fastcgi_pass   127.0.0.1:9000;

        fastcgi_index  index.php;

        fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;

        fastcgi_param  URL_PREFIX   $http_urlprefix;

        fastcgi_connect_timeout 300;



        include fastcgi.conf;



}

解释:

fastcgi_param  URL_PREFIX   $http_urlprefix;(前端设置的參数名是urlprefix,这里读取的是http_urlprefix,这是由于nginx在处理參数时全部參数名前面都给加了http_
,另外fastcgi_param  URL_PREFIX 这个參数名,在php读取时不须要加不论什么前缀。并且大写和小写敏感,一定要注意。

那么后台php 就能够用 $_SERVER['URL_PREFIX']  取出来我们前端设置的參数了。

if (isset($_SERVER['URL_PREFIX']) && $_SERVER['URL_PREFIX'] == "https"){

    //巴拉巴扒拉

}

nginx负载均衡向后台传递參数方法(后端也是nginxserver)的更多相关文章

  1. Nginx 负载均衡-加权轮询策略剖析

    本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别(Nginx根据每个工作进程的当前压力调整它们获取监听套接口的几率,那些当前比较空闲的工作进程有更 ...

  2. LVS+nginx负载均衡知识点1

    lvs+nginx负载均衡 1       学习目标 掌握什么是负载均衡及负载均衡的作用和意义. 了解lvs负载均衡的三种模式. 了解lvs-DR负载均衡部署方法. 掌握nginx实现负载均衡的方法. ...

  3. lvs+nginx负载均衡

    1       学习目标 掌握什么是负载均衡及负载均衡的作用和意义. 了解lvs负载均衡的三种模式. 了解lvs-DR负载均衡部署方法. 掌握nginx实现负载均衡的方法. 掌握lvs+nginx负载 ...

  4. Nginx负载均衡中后端节点服务器健康检查的操作梳理

    正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...

  5. nginx负载均衡实验

    Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...

  6. nginx负载均衡及配置

    nginx负载均衡及配置 1 负载均衡概述 负载均衡由来是因为当一台服务器单位时间内的访问量很大时,此时服务器的压力也会很大,当超过自身承受能力时,服务器就会崩溃.为避免让服务器崩溃,用户拥有更好的体 ...

  7. 使用Nginx负载均衡搭建高性能.NETweb应用程序(转)

    一.遇到的问题 当我们用IIS服务器部署了一个web应用以后,当很多用户高并发访问的时候,客户端响应就会很慢,客户的体验就会很差,由于IIS接受到客户端请求的时候,就会创建一个线程,当线程达到几千个时 ...

  8. Linux(7)- Nginx.conf主配置文件、Nginx虚拟主机/访问日志/限制访问IP/错误页面优化、Nginx反向代理、Nginx负载均衡

    一.Nginx.conf主配置文件 Nginx主配置文件conf/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的.一般,每个区块以一对大括号{}来表示开始与结束. 核心模 ...

  9. 11.2,nginx负载均衡实验

    Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...

随机推荐

  1. github 添加完sshkey之后仍然需要输入密码

    1.在家目录下创建.netrc文件,内容如下 machine github.com login username password password window下创建:在用户文件夹如C:\Users ...

  2. 第3节 mapreduce高级:10、11、分组求取topN

    只要修改OrderReducer.java的reduce方法,修改为: int i = 0;for(NullWritable nullWritable:values){ if(i>=2) bre ...

  3. Windows下如何使用CMD命令进入MySQL数据库

    1.打开[开始]>[运行]输入[cmd]单击[确定]后出现CMD命令黑色窗口,这就是我们说的CMD命令行,或者使用快捷键Windows键(在键盘上有个Windows标志的按键)+R输入cmd后回 ...

  4. Jedis集成到项目中

    Jedis整合到项目中,就可以在项目中使用redis了,作为Java程序狗,这个可以会,贴代码了,不截图了,哈哈 一.maven中的pom.xml中添加依赖 <dependency> &l ...

  5. Linux 内核框架图

  6. PHP条件运算符的“坑”

    今天遇到一个关于PHP 嵌套使用条件运算符(ternary expressions)的问题 现象 先来看一段C语言代码(test.c): #include<stdio.h> int mai ...

  7. python3.6的requests库&HTMLTestRunner实现测试报告

    '''1. 在suite.addTest时,可以把需要的用例先写入一个列表list中,list当做addTest的参数:2. 在unittest.main(verbosity=2)中,默认为1,设置为 ...

  8. Anaconda基本用法

    Anaconda基本用法 conda info --envs/(-e) // 查看当前的环境变量 conda create -n py36(环境的名称,随意) python=3.6(指定版本) //  ...

  9. 【05】AJAX实例-检测用户名是否存在(实例)

    AJAX实例-检测用户名是否存在   用户注册时,需要填写个人信息,其中包括用户名.当用户输入完成时,JavaScript 需要及时检测用户名是否存在,如果存在给出提示,请用户更换用户名. 当然,这个 ...

  10. HDU 2815 扩展baby step giant step 算法

    题目大意就是求 a^x = b(mod c) 中的x 用一般的baby step giant step 算法会超时 这里参考的是http://hi.baidu.com/aekdycoin/item/2 ...