一文看到懂Nginx反向代理解决跨域/doge

前言

说起来挺不好意思的,这么久了才搞明白这个,之前对于解决跨域问题,尝试了好几次,有时候放弃了,有时候解决了,但总体还是迷糊的,对于nginx反向代理还是不会

具体原因我觉得是很多文章都是直接给了nginx.conf的配置,什么情况也没说,很难理解,所以基于这种情况我觉得我很有必要把的这个心路历程记录下来

以下主要是我个人,对Nginx反向代理解决前端跨域这个问题的认识过程

一、开始我眼中的Nginx反向代理

场景是这样:
一个前端(Vue)程序,要访问后端服务(Java),结果发起请求的时候,发生了跨域

前端:localhost:8080
后端:localhost:8083
在这里插入图片描述

结果呢,肯定是失败告终,这个想法维持了我很长一段时间,直到最近,我才理解了他的真正的样子

二、真实的反向代理

在这里插入图片描述
按前面的图来的话, 正常情况

前端:localhost:8080
后端:localhost:8083

前端请求会报跨域,这时候我们加个nginx,端口随便一个没被占用的都可以
这里8888,加入如下配置

	# 这个10.15.55.68就是localhost
	server {
		listen  8888;         # 我们要监听的端口(可以是没有被占用的任意端口号)
		server_name 10.15.55.68;     # 你的服务器ip地址
		location /{        # 代理/开头的路径
			proxy_pass http://10.15.55.68:8080/; # 代理指向的ip地址以及端口号,切记加上http
	  }
		location /api {        #  代理api开头的路径
		rewrite ^/api/(.*)$ /$1 break;
			proxy_pass http://10.15.55.68:8083/; # 指向后端接口的IP地址加端口号
	  }
	}

配置好后,我们可以通过访问

localhost:8888

nginx会去访问 localhost:8080 然后8080访问8083

三、打包部署方式代理

如果是vue项目通过打包(npm run build)获得的或者别的静态html项目,可以直接放在nginx的html目录下,只需要配置一个/api, / 指向url改成root的项目地址即可
理论上就是上面的两个location拿过来, location /的代理地hi改为本地

这样就少了一个端口

    server {
        listen       80;
        server_name  localhost;
        location / {
            root  /usr/local/nginx/html/record-web;
            index  index.html index.htm;
			try_files $uri $uri/ /index.html;  #解决页面刷新404问题
        }
		 #开始配置我们的反向代理
        location /api{        #"/api"中的api可以替换为自定义的任何内容     
          rewrite ^/api/(.*)$ /$1 break;     
          proxy_pass http://www.reentrantlock.cn:8083; #我们要反向代理的地址
        }
            root   html;
        }
    }

四、参考资料

  1. 如何用Nginx解决前端跨域问题?
  2. 前后端分离利用nginx转发请求后台接口地址
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值