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)

大家都在看

  • .NET 7 SDK 开始 支持构建容器化应用程序

    微软于 8 月 25 日在.NET官方博客上,.NET 7 SDK 将包括对创建容器化应用程序的支持,作为构建发布过程的一部分,从而绕过需要。显式 Docker 构建阶段。 这一决…

    Java 2023年6月5日
    0101
  • Java基础常见知识&面试题总结(中)

    Java基础常见知识&面试题总结(中) 泛型 Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符? Java 泛型(generics) 是 JDK 5 中引入的一个…

    Java 2023年6月9日
    087
  • Java 判断字符串 中文是否为乱码

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class ChineseUtill …

    Java 2023年5月29日
    067
  • hdfs常用shell命令

    1、创建文件夹 hadoop fs -mkdir [-p] … path 为待创建的目录 -p选项的行为与Unix mkdir -p非常相似,它会沿着路径创建父目录。 …

    Java 2023年6月5日
    080
  • Jackson通用工具类

    compile group: ‘com.fasterxml.jackson.core’, name: ‘jackson-core’, version: ‘2.11.1’ compi…

    Java 2023年6月6日
    085
  • shiro AuthenticationToken体系

    shiro AuthenticationToken体系 如上图,为AuthenticationToken的继承体系,AuthenticationToken是在shiro进行身份验证…

    Java 2023年6月7日
    092
  • 实战派 | Java项目中玩转Redis6.0客户端缓存!

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处。 哈喽大家好啊,我是Hydra。 在前…

    Java 2023年6月5日
    098
  • Maven 依赖调解源码解析(六):dependencyManagement 版本锁定

    我们在根模块 mavenDependencyDemo 中,用 dependencyManagement 的形式直接指定 X 的版本为 2.0。同时,A 依赖 C,而 C 依赖了 X…

    Java 2023年6月16日
    089
  • IO流整的明明白白!

    ​ File课理解为文件和文件夹(目录),用于表示磁盘中某个文件或文件夹的路径。该类包含了文件的创建、删除、重命名、判断是否存在等方法。 ​ 只能设置和获取文件本身的信息(文件大小…

    Java 2023年6月7日
    0116
  • 继承

    基本概念 扩充一个类已有的功能 优点 父类定义公共的内容,方便统一修改 整体减少代码量 添加新类方便 语法 class 子类 extends 父类{} 子类又叫派生类 父类又叫超类…

    Java 2023年6月6日
    080
  • 前后端分离项目,如何解决跨域问题?

    跨域问题是前后端分离项目中非常常见的一个问题,举例来说,编程猫(codingmore)学习网站的前端服务跑在 8080 端口下,后端服务跑在 9002 端口下,那么前端在请求后端接…

    Java 2023年6月9日
    079
  • SSM框架的整合

    B站楠哥的笔记 视频链接:https://www.bilibili.com/video/BV1hE411F77L 学习SSM框架的整合 SSM框架整合 Spring + Sprin…

    Java 2023年6月7日
    082
  • Sharepoint 2013 安装部署系列篇 第二篇 — SQL集群安装

    第一部分 系统集群安装 . 第三部分 安装和配置网络负载均衡在前端web服务器 第四部分 安装和配置sharepoint 场(三层拓扑部署) 以下图片均为sharepoint 20…

    Java 2023年6月7日
    086
  • 随机生成数组+冒泡排序

    示例如下: public class MaoPaoPaiXu { public static int[] mp(int[] nums) { for (int i = 0; i &l…

    Java 2023年6月6日
    0105
  • SpringCloud-Consul

    1. Consul 简介 Consul是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服 务注册与发现的方案,Consul 的方案更&#…

    Java 2023年6月7日
    068
  • flask基础之session原理详解(十)

    flask_session是flask框架实现session功能的一个插件,用来替代flask自带的session实现机制,flask默认的session信息保存在cookie中,…

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