利用hosts文件修改域名映射实现Nignx反向代理

windos下查看dns地址

ipconfig -all

在这里插入图片描述

域名解析的原理

域名解析是首先会在本机的localhost中查找域名解析规则,如果没有会通过本地配置的域名服务器地址进行域名解析。
下面我们通过配置localhost进行域名访问。

一、修改本地映射

第一步:修改文件,路径:C:\Windows\System32\drivers\etc\ 下的host文件
添加如下内容,这样我们就可以用:http://gulimall.com 访问 192.168.56.10 地址了。
这里的192.168.56.10 是访问虚拟机的地址,nginx就安装在其中,
在linux下通过 ip addr 获取的
在这里插入图片描述

	192.168.56.10   gulimall.com

第二步:把hosts文件拷贝出来,修改完成后替换原来文件

二、nginx反向代理

2.1 概念

正向代理:客户端知道目标服务器的地址,在客户端与目标服务器之前有一个服务器用于请求的转发。
反向代理:目标服务不对外暴露接口,只有代理服务器知道目标服务器的地址,客户不知道目标服务器,只需要给代理服务器发信息,代理服务器根据配置选择使用哪个服务器。

2.2 配置过程

官方文档:http://nginx.org/en/docs/http/load_balancing.html
思路:nigx 负载均衡到 网关,网关可以有多个, 在网关设置路由规则路由到对应的服务上
官方配置

http {
    
    
    upstream myapp1 {
    
    
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
    
    
        listen 80;

        location / {
    
    
            proxy_pass http://myapp1;
        }
    }
}

第一步:配置nginx.config 中 配置上游服务地址
为什么要配置192.168.56.1 因为通过ipconfig得到的虚拟机与本地的网卡的地址是192.168.56.1。这个地址是可以访问我本机的。

    upstream gulimall{
    
    
        server 192.168.56.1:88;
    }

在这里插入图片描述
第二步:配置 自定义的配置文件gulimall.config 中配置负载均衡
gulimall 这个名称是上游服务器配置时取的名称

 listen       80;
 server_name  gulimall.com;
 location / {
    
    
        proxy_set_header Host   $host;
        proxy_pass      http://gulimall;

    }
注意:nginx给网关转发时会丢失很多信息,host就是其中之一 proxy_set_header Host $host; 表示转发时给header 中的Host属性中加入原有的值$host

第三步:在网关中配置路由

  • Host 表示当检查到head中的host参数为**.gulimall.com,gulimall.com 条件时进入路由
- id: gulimall_host_route
          uri: lb://gulimall-product
          predicates:
#            - Host=gulimall.com,item.gulimall.com
            - Host=**.gulimall.com,gulimall.com

三、整个访问流程

  1. 浏览器输入:gulimall.com 经过hosts中的 ip映射 会映射到 192.168.56.10 下的80 端口
    2)192.168.56.10 下的80 运行的是nginx ,nginx得到请求,请求中header参数Host为 gulimall.com
    3)nginx查看自己配置,发现监听的是80端口并且host为gulimall.com,于是匹配成功,代理到http://gulimall;
listen       80;
 server_name  gulimall.com;
 location / {
    
    
        proxy_set_header Host   $host;
        proxy_pass      http://gulimall;

    }

此处需要注意:由于nginx给网关发信息是会修饰一些参数:其中就包含host,所以需要把host手动配置发过去,网关才能配置断言进行路由跳转。
4)http://gulimall 中的gulimall 是通过上流服务器配置路由地址(网关地址)为:http://192.168.56.1:88

    upstream gulimall{
    
    
        server 192.168.56.1:88;
    }

5)nginx 配置代理跳转后:http://192.168.56.1:88(这个地址在浏览器中不会显示),并且带着header中的host: gulimall.com
6)网关接收到请求后匹配到Host断言规则,路由到:lb://gulimall-product 这个微服务,从而启动了这个微服务的首页

        - id: gulimall_host_route
          uri: lb://gulimall-product
          predicates:
#            - Host=gulimall.com,item.gulimall.com
            - Host=**.gulimall.com,gulimall.com

7)最终页面展示:
在这里插入图片描述

おすすめ

転載: blog.csdn.net/fen_dou_shao_nian/article/details/117966465