配置nginx反向代理实现跨域

41 篇文章 0 订阅
订阅专栏
13 篇文章 0 订阅
订阅专栏
1 nginx反向代理接口跨域
1.1 正向代理与反向代理的区别:
  • 正向代理:客户端向服务器请求数据时,服务器并不需要直到客户端的来源(即隐藏了客户端)
  • 反向代理:客户端向服务器请求数据,直观请求到数据即可,不需要直到数据来源于哪个服务器(即隐藏了服务器)
1.2 如何使用nginx?

1)首先,由于nginx是一个web服务器,你需要到相应的官网进行下载,且进行相应的配置,下载地址: http://nginx.org/en/download.html

2)下载的相关教程参考此文章:
https://www.cnblogs.com/renjing/p/6126284.html

3)使用nginx的例子参考文章: https://zhuanlan.zhihu.com/p/94197713

1.3 配置nginx实现跨域的步骤

1.去 nginx官网下载搭建nginx环境
在这里插入图片描述
2.修改nginx的配置文件,找到nginx.conf文件,修改相关的配置,配置举例如下:

举例1)
在这里插入图片描述
举例2)
在这里插入图片描述
举例2配置说明:

  • 然后我们配置一下代理,这个意思就是我们请求中有 api 这样的就会代理到 http://127.0.0.1:666,所以我们只要访问 http://localhost:9999/api/getList 这个不跨域的接口,然后就会由服务器反向代理到 http://localhost:666/api/getList。
  • 因此在前端发送跨域请求时,改变如下:
// xhr.open('GET', 'http://localhost:666/api/getList', true);
//此时用/api,举例2所配置的nginx反向代理的作用就是将/api转向http://127.0.0.1:666
xhr.open('GET', '/api/getList', true);
  • 因此,配置了nginx反向代理的'/api/getList'等价于起始的'http://localhost:666/api/getList',且此时不会出现提示的跨域的错误信息;
1.4 这个实现流程
1.4.1在未配置nginx反向代理之前
  • 服务接口
    既然请求,肯定需要先写一个服务接口,我们用 node 起一个服务:
  // index.js
const http = require('http');
const fs = require('fs');
const url = require('url');

const server = http.createServer(function (req, res) {
  if (req.url === '/favicon.ico') {
    return;
  }
  const parseUrl = url.parse(req.url, true);
  console.log('parseUrl', parseUrl.pathname)
  if (parseUrl.pathname === '/api/getList') {
    const list = {'a': 1, 'b': 2}
    res.writeHead(200, {'content-Type':'text/html;charset=UTF-8'})  
    res.end(JSON.stringify(list))
  }else {
    res.write(`
    port: 666
  `)
    res.end()
  }
  });
server.listen(666, function () {
  console.log('server is starting on port 666');
});

我们来访问一下,可以拿到数据了。
在这里插入图片描述

  • 测试页面
    然后,我们写一个简单的 ajax 请求页面。你可以本地用http-server启动访问下,可以发现请求跨域了:
<html>
<head>
  <title></title>
</head>
<body>
  <button onclick="sendAjax()">sendAjax</button>
<script type="text/javascript">
  var sendAjax = () => {
      var xhr = new XMLHttpRequest();
      xhr.open('GET', 'http://localhost:666/api/getList', true);
      xhr.send();
      xhr.onreadystatechange = function (e) {
        if (xhr.readyState == 4 && xhr.status == 200) {
          console.log(xhr.responseText);
        }
      };
  }
</script>
</body>
</html>

在这里插入图片描述

1.4.2 经过1.3的配置代理之后

html文件改变如下,主要时改变了xhr.open()的请求地址,如下:

// xhr.open('GET', 'http://localhost:666/api/getList', true);
xhr.open('GET', '/api/getList', true);
  • 测试结果
    在这里插入图片描述
  • 此时我们也可以随便用一个域名测试以下。Nginx 重新配置下:
    listen       80;
        server_name  yumingtest;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm;
        }
        location /api/ {
            proxy_pass http://127.0.0.1:666;
        }

在这里插入图片描述
然后在C:\Windows\System32\drivers\etc的 hosts 文件里面添加这条:127.0.0.1 yumingtest.com,重启下 Nginx。
在这里插入图片描述
关于hosts 文件的作用,就是我们输入域名不是要需要经过DNS解析IP嘛,这个里面就存了一些;输入域名后并不是先自动从 Hosts 文件中寻找对应的 IP 地址。而是浏览器先从浏览器的dns缓存中找,找不到再去 hosts文件中找;

参考文章:
https://zhuanlan.zhihu.com/p/94197713

Nginx学习笔记(六)Nginx实现跨域(cors)访问(2种方案)
nuaa042216的博客
10-07 1万+
Nginx实现跨域访问
Nginx——反向代理解决跨域问题(Windows)
qq_39367410的博客
01-11 4354
nginx解决跨域问题这个破玩意是真麻烦,必须写一篇文章避避坑了。
(实测简单完整无坑)nginx跨域配置、使用,docker部署nginx全流程
soulwirter的博客
09-25 3764
nginx跨域配置、使用,docker部署nginx全流程(实测简单完整无坑)
nginx 解决跨域问题
最新发布
qq_33240556的博客
04-23 685
上述配置中,设置了CORS响应头部,允许来自任何源的请求('*'表示任意源,也可以替换为具体的域名),并且指定了允许的方法和请求头。在前后端分离的开发架构中,跨域问题时常发生,特别是浏览器出于安全原因实施的同源策略限制了不同源的网页间相互交互的能力。当前端应用(如:localhost:8080)需要访问后端服务(如:localhost:59200)时,可以通过Nginx配置反向代理,使两者看起来像是同一个源,从而规避浏览器的同源策略限制。允许所有源时可能存在安全风险,实际部署时应尽量精确控制允许的源列表。
Nginx反向代理解决Vue跨域问题
StoNENee的博客
04-04 7450
Nginx反向代理解决Vue跨域问题
Nginx详解 五:反向代理
m0_74170357的博客
09-06 1万+
正向代理代理的是客户端正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求,将获得的内容返回给客户端反向代理代理的是服务端反向代理:(reverse proxy),指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式客户端不直接与后端服务器进行通信,而是与反向代理服务器进行通信,隐藏了后端服务器的 IP 地址。
Nginx服务配置解决跨域问题
小问号我们是朋友的博客
02-11 1251
nginx可以对服务器进行代理,这里记录下配置过程。 1.nginx配置文件配置部分 nginx.conf: 红圈部分为nginx代理地址配置。 2.web工程配置部分 工程中只需要配置ip和端口地址之后的部分即可,PRESENT_IP 为当前环境使用的url。 //配置后台接口URL地址 export const ipList = { //服务器环境中,Nginx会代理接口ip,所以这里只使用基础url即可 PRESENT_IP : ...
Nginx反向代理 跨域问题
qq_29755359的博客
07-17 599
H5项目部署在自己服务器上,后端数据调用第三方。第三方不愿意解决跨域问题a.comc.comb.comb.comb.comc.com。
利用Nginx反向代理解决跨域问题详解
01-10
问题 在之前的分享的跨域资源共享的文章中,有提到... 基于与合作方后台的配合,利用nginx方向代理来满足浏览器的同源策略来实现跨域 实现方法 反向代理概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受In
Nginx 反向代理解决JS跨域
02-02
通过使用Nginx 反向代理来解决JS跨域问题 http://blog.csdn.net/mzhaocai/article/details/79238338
Nginx反向代理多域名的HTTP和HTTPS服务的实现
09-29
主要介绍了Nginx反向代理多域名的HTTP和HTTPS服务的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
使用Nginx 反向代理来避免 ajax 跨域请求的方法
01-19
服务器上 nginx + tomcat ,其中 nginx 监听 80 端口, tomcat 监听 8080 端口。 因为对前端不熟悉,以为用 ajax 就可以不需要 callback ,然而前端的同学说不跨域的情况下才不需要 callback ,让我在返回的 json 里...
nginx反向代理导致session失效的问题解决
01-09
两边通过同一个nginx进行反向代理nginx配置大致如下, location /health/ { proxy_pass http://192.168.40.159:8081/health/; #无问题的配置 } location /health-dev/ { proxy_pass ...
Nginx反向代理技巧
时清云的博客
08-17 132
简单的说就是A需要向C发送请求,但是C不认识A自然是不愿意的,但是A认识BA向B发送请求,可是B也不会返回什么东西但是他认识可以返回请求C,那么B再次向C发送请求,C看在B的面子上给B返回请求了,B再给A返回请求。。。。具体到开发中就是,前端需要向这个域名调用接口,但是前端开发环境启动项目是服务,直接调用接口会跨域。所以前端需要做一层代理。从直接请求到域名的接口,这对于前端来说应该是无感知的。反向代理隐藏了真实的服务端;切换环境debug。
Nginx反向代理配置
热门推荐
weixin_42751488的博客
04-14 9万+
nginx反向代理配置
【利用 Nginx 反向代理解决跨域问题】
u010696176的博客
11-24 2184
利用 Nginx 反向代理解决跨域问题 用Nginx解决跨域 我们用Nginx要解决的问题就是跨域,只要是前后端分离就会出现跨域跨域是因为协议、IP、端口其中的一个不相同。我们想要解决跨域问题,就是让浏览器感觉我们是在同一个协议、IP、端口下,然后去访问Nginx的地址而不是前端地址。
nginx反向代理解决跨域问题
zlejan的博客
02-27 958
这只是不同端口跨域的解决方法
配置nginx反向代理,解决前端测试开发跨域问题
vscode_js的博客
08-21 5148
由于本地开发导致测试数据无法正常获取,控制台报错:  其实跨越的问题就是我们在本地开发测试时才会产生跨域问题,具体什么才是跨域问题我就不唠叨了!开发完成,项目上线是不存在跨域的,因为我们的前端代码和后台接口同处在一个服务器上是不存在跨域的。言归正传,脱离后台解决前端本地开发测试数据的跨域问题: 首先下载安装Nginx,很简单百度搜索并下载安装 Nginx.exe软件   其次,安装完成...
Nginx入门及如何反向代理解决生产环境跨域问题
weixin_34281537的博客
05-20 162
1.Nginx入门与基本操作篇 注:由于服务器是windows系统,所以本文主要讲解Nginx在windows下的操作。 首先下载Nginx 解压缩,我们所有的配置基本都在万能的 nginx/conf/nginx.conf 中完成,其它文件可以不用理 关于nginx.conf ... #需要我们按需要修改的一般只有中间server里的代码 server { # 设置监听...
nginx反向代理解决跨域
05-05
Nginx 反向代理可以解决跨域问题,具体做法如下: 1. 在 Nginx配置文件中添加反向代理配置,将请求转发到目标服务器。 ``` location /api/ { proxy_pass http://api.example.com/; } ``` 2. 在目标服务器的响应头中添加跨域相关的信息,如 Access-Control-Allow-Origin、Access-Control-Allow-Headers、Access-Control-Allow-Methods 等。 ``` access_control_allow_origin: * access_control_allow_headers: Authorization,Content-Type access_control_allow_methods: GET, POST, PUT, DELETE, OPTIONS ``` 3. 重启 Nginx 服务,使配置生效。 通过以上步骤,就可以实现 Nginx 反向代理解决跨域问题。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Form表单提交数据的几种方式 37966
  • Vue中.env|.env.development|.env.production文件说明 33406
  • DOM和BOM的区别 25120
  • React生命周期详解 15178
  • axios请求中以params或body形式传递参数的区别 11441

分类专栏

  • JavaScript 41篇
  • Hybrid App 1篇
  • Vant2 1篇
  • react 4篇
  • Vue3 1篇
  • iView 2篇
  • react-native 1篇
  • Vue 55篇
  • uni-app 7篇
  • ES6 12篇
  • TypeScript 3篇
  • 微信小程序 10篇
  • HTML 9篇
  • CSS 20篇
  • webpack 3篇
  • layui 1篇
  • Web前端面试题 15篇
  • AJAX 13篇
  • jQuery 6篇
  • node 2篇
  • Bootstrap 3篇
  • 笔记 1篇
  • git 5篇
  • 响应式布局 3篇
  • npm 4篇

最新评论

  • 前端下载文件流,设置返回值类型responseType:‘blob‘无效的问题

    a2367163120: 那这个是后端决定的么,之前问后端,他们也说不知道,然后让前端试

  • 前端下载文件流,设置返回值类型responseType:‘blob‘无效的问题

    蚂蚁王: 研究了半天 总算解决了 太感谢了!!! 我也是这个问题 没有查到完全想不到表情包

  • 前端下载文件流,设置返回值类型responseType:‘blob‘无效的问题

    学学学无止境: 不是固定的,具体定什么类型看你们的实现方式。如果你们用的是arraybuffer,那么请求头设置为arraybuffer即可,不过在下载文件的时候也是需要将arraybuffer转成bold下载的。

  • 前端下载文件流,设置返回值类型responseType:‘blob‘无效的问题

    a2367163120: 博主您好,请教个问题,就是返回文件类型是固定的blob么,因为我之前看好像还有arraybuffer,前端这边改怎么区分捏

大家在看

  • 【有效解决】PyQt6在Jupyter(.ipynb)环境中多次运行时导致的内核崩溃
  • 【吃包子game】 128
  • 【发射火箭game】
  • 大模型算法岗常见面试题100道(含答案) 562
  • 生产实习Day5 ---- 电商日志数据分析(问题2--统计各个省份的浏览量 (需要解析IP)) 580

最新文章

  • 如何在vue3+vite中优雅的使用iconify图标
  • 如何封装Vue组件并上传到npm
  • JavaScript中的继承方式详细解析
2024年11篇
2023年16篇
2022年27篇
2021年26篇
2020年121篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

聚圣源封神召唤师江姓的起名鲁迅故乡丸子加盟权国全民安全教育日是几月几日lolud鲁氏女孩起名五行属金男孩的起名常用字库呢喃诗章商务酒店起名公司起名查凶狠泰宁在线月收入5000如何理财走过那一个拐角俊字起名男杂诗陶渊明新疆旅游攻略必玩的景点卯时出生起名字幸福还会来敲门剧情介绍宝宝缺水和木起名字宝宝免费起名测算结果打分生辰八字群起名字起什么好季美熙女装老人的名字怎么起周易给品牌起名池昌旭快乐大本营root软件hotavxxx.com太阳的后裔云盘淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化