Nginx请求转发,反向代理配置

Nginx反向代理

nginx通常用于帮我们解决跨域问题,我们只需要会一些简单配置即可

首先来讲一下跨域是什么

比如你的前端项目和后端项目都部署在了一个服务器上了

但是这两个项目端口号是不一样的比如前端是9001 后端是10010

前端如果给后端发请求的时候就会产生跨域问题

因为你的前端资源是ip:9001 你请求的后端资源是ip:10010

你的请求是从9001发到10010端口的

你跨了端口,这就相当于跨域了

这个时候我们就需要nginx去帮我们解决这个跨域的问题

因为它会帮我们把前端请求转发到对应的后端端口

下面是配置方式

server {
    	   listen 9001;
    	   server_name 125.5.3.6;
    	   location / {
    	   	root /usr/local/nginx/html/shop/shop-admin;
    	   	index index.html index.htm;
    	   }
    	   location  /api/ {
    	   	  proxy_pass http://125.5.3.6:10010;
    	   	  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就会去监听9001端口是否有请求存在

当前端发请求为 125.5.3.6:9001/api/..... 的时候

就会将该请求原封不动的发送到125.5.3.6:10010/api/... 后端服务

这样就没有跨域问题,能从后端服务拿到数据了

一般我们的10010端口为gateway网关服务

我们可以在配置中,去让gateway去转发到下游微服务的时候,去吧请求中的/api/给自动的去掉

配置如下

server:
  port: 10010
spring:
  application:
    name: Gateway
  cloud:
    gateway:
      routes:
        - id: user # 路由规则id,自定义,唯一
          uri: lb://user-service # 路由的目标服务,lb代表负载均衡,会从注册中心拉取服务列表
          predicates: # 路由断言,判断当前请求是否符合当前规则,符合则路由到目标服务
            - Path=/api/user/** # 这里是以请求路径作为判断规则
          filters:
            - StripPrefix=1 #在请求转发到下游微服务的时候,自动去掉最前面的那一节,即去掉/api/
        - id: order
          uri: lb://order-service
          predicates:
            - Path=/api//order/**
          filters:
            - StripPrefix=1
        - id: item
          uri: lb://item-service
          predicates:
            - Path=/api/item/**
          filters:
            - StripPrefix=1
      globalcors:
        add-to-simple-url-handler-mapping: true
        corsConfigurations:
          '[/**]':
            allowedOrigins: # 允许哪些网站的跨域请求
              - "http://localhost:9001"
              - "http://localhost:9002"
            allowedMethods: # 允许的跨域ajax的请求方式
              - "GET"
              - "POST"
              - "DELETE"
              - "PUT"
              - "OPTIONS"
            allowedHeaders: "*" # 允许在请求中携带的头信息
            allowCredentials: true # 是否允许携带cookie
            maxAge: 360000 # 这次跨域检测的有效期
    nacos:
      server-addr: 125.5.3.6:8848 #服务器nacos地址(该ip地址是瞎写的,写自己的即可)

------------------------------------------- 分割线 -------------------------------------------------------

下面是正向代理,主要是第一次部署去测试访问前端资源用的,并没有正确解决跨域问题,前后端跨域问题看上面的就行,这个需要在http{ }代码块中写一个server

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值