nginx的upstream后端名称居然变成了请求的host了?

问题现象:

今天用nginx做反向代理服务器时,配置upstream后,直接在location里使用,居然发现代理失败, 将upstream的后端名称当做IP(Host)地址使用了,么有将nginx的IP代理到后端应用上去。。。

我的nginx机器的IP为10.154.44.95, nginx的配置信息如下:

[appadmin@t3-tkbranch-dcom-web01 conf]$ sudo ./../sbin/nginx -V
nginx version: openresty/1.13.6.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/home/appadmin/nginx-1.13.6.2 --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.0 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2rc3 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.13 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --with-ld-opt=-Wl,-rpath,/home/appadmin/nginx-1.13.6.2/luajit/lib --with-http_ssl_module --with-stream --with-stream_ssl_module --with-http_realip_module --with-pcre --add-module=../ngx_cache_purge-2.3/ --add-module=../nginx_upstream_check_module-0.3.0/ --add-module=../nginx-sticky-module --add-module=../nginx-module-vts --with-http_stub_status_module --with-http_v2_module

我的nginx配置如下:

http {
    include       mime.types;
    default_type  application/octet-stream;

    upstream svrsdcim {
        server 10.154.44.91:8082;
    }

    upstream svrsportal {
        server 10.154.44.91:8081;
    }

    server {
        listen       80;
        server_name  localhost;

        location /portal {
            proxy_pass http://svrsportal;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location /dcim {
            proxy_pass http://svrsdcim;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

出现的问题是这样的,如下图:

nginx的upstream后端名称居然变成了请求的host了?

研究发现,location的配置项里面,添加一行配置即可,即:proxy_set_header Host $http_host;改后的配置如下

http {
    include       mime.types;
    default_type  application/octet-stream;

    upstream svrsdcim {
        server 10.154.44.91:8082;
    }

    upstream svrsportal {
        server 10.154.44.91:8081;
    }

    server {
        listen       80;
        server_name  localhost;

        location /portal {
            proxy_pass http://svrsportal;
            proxy_set_header Host $http_host;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location /dcim {
            proxy_pass http://svrsdcim;
            proxy_set_header Host $http_host;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

配置上上述红色的内容后,即可解决问题, svrsportal已经变成了IP和端口号了。如下图:

nginx的upstream后端名称居然变成了请求的host了?

加入的这行配置,到底是什么作用呢,可以参考官方的文档说明:

nginx的upstream后端名称居然变成了请求的host了?

加入proxy_set_header Host $http_host之后,相当于告知nginx,向后端被代理的服务器告知一个信息,对外呈现的服务地址为$http_host所代表的的地址,即这里就是nginx所在的服务器地址。

Original: https://www.cnblogs.com/shihuc/p/14208349.html
Author: shihuc
Title: nginx的upstream后端名称居然变成了请求的host了?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543615/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread–内核之线程的创建

    RT-Thread系统中线程是调度的最小单位,后面的内核讲解都是以线程为单位展开的,线程的本质就是我们平时跑的裸机函数,但是它添加了实时性的元素,可以函数级的抢占,但不存在中断嵌套…

    Java 2023年5月29日
    062
  • MySQL如何有效的存储IP地址

    前几天,阿淼的一个朋友去面试,他回来告诉我,面试官问他 IP 地址是怎么存在数据库的?他当时也没多想,直接就回答的存字符串啊(心想:这么简单的问题,怕不是看不起我吧) 前面这段权当…

    Java 2023年6月5日
    085
  • MyBatis的执行流程分析

    核心流程介绍 我们都知道 MyBatis 是对 JDBC 的封装,不管怎样,JDBC 的那一套还是不会变的,只是做了抽象、封装、归类等;所以我们顺着 JDBC 的思路来说下 MyB…

    Java 2023年6月5日
    078
  • 配置 JAVA 环境 JDK + IDEA

    搜索 ORACLE 官网,找到 JDK,下载 JDK8 版本 / JDK11 版本 选择合适的路径,我这里放在了 D 盘 配置下方系统环境变量,变量名为 JAVA_HOME,把刚刚…

    Java 2023年6月5日
    074
  • Mybatis-Plus自动生成器生成代码基于springboot项目启动

    创建springbootweb项目 pom.xml 导入 MBP 依赖 <dependency> <groupid>com.baomidou</gro…

    Java 2023年6月15日
    083
  • linux下安装jdk8

    1、下载jdk8安装包 2、拷贝到指定目录下(比如:/usr/package) 3、解压到安装目录下(比如:/usr/soft/java) tar -zxvf jdk-8u121-…

    Java 2023年6月8日
    072
  • Spring 源码(13)Spring Bean 的创建过程(4)

    Spring Bean的创建过程非常的复杂,上一篇重点介绍了 Spring在创建 Bean的过程中,使用 InstantiationBeanPostProcessor进行提前创建 …

    Java 2023年6月14日
    073
  • hibernate and spring links

    http://blog.itpub.net/post/329/1756 http://blog.itpub.net/category/11/76 http://domaindriv…

    Java 2023年5月29日
    082
  • 第一个mybatis程序

    2、第一个mybatis程序 思路:搭建环境—>导入mybatis—>编写代码—>测试! 2.1、搭建环境 搭建数据库 CRE…

    Java 2023年6月13日
    086
  • 【每日算法】搜索二维矩阵

    难度为 【中等】 &#x7F16;&#x5199;&#x4E00;&#x4E2A;&#x9AD8;&#x6548;&#x76…

    Java 2023年6月9日
    074
  • 类加载(四):spring-boot-loader 模块

    spring-boot jar包结构 2、 正常情况下,java -jar的类加载器是AppClassLoader 但是spring 使用自定义的URLClassLoader加载我…

    Java 2023年5月30日
    078
  • 零点问题与微分不等式

    零点问题与微分不等式 零点问题关注于”有没有解”,”有几个解”。 单调性与存在性 罗尔原话 多项式方程的根 单调性与存在性 可以使用…

    Java 2023年6月7日
    059
  • springboot1.5.4 log4j

    resources下面添加: log4j.properties: # log4j.rootCategory=INFO, stdout, file, errorfile log4j….

    Java 2023年5月30日
    0115
  • Java导出带格式的Excel数据到Word表格

    前言 在Word中创建报告时,我们经常会遇到这样的情况:我们需要将数据从Excel中复制和粘贴到Word中,这样读者就可以直接在Word中浏览数据,而不用打开Excel文档。在本文…

    Java 2023年6月15日
    059
  • 部署-centos安装docker

    docker简单介绍 docker是一门容器虚拟化的技术。它能够实现环境+软件一起打包的效果,因此它能避免因为环境不一样而导致的各种问题,大大的提高了软件的部署效率。而且在dock…

    Java 2023年6月7日
    079
  • 观察线程的状态

    public class ThreadState { public static void main(String[] args) { // 定义一个线程 Thread threa…

    Java 2023年6月13日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球