当前位置: 首页 > article >正文

nginx反向代理解决跨域前端实践

需求实现

  • 本地请求百度的一个搜索接口,用nginx代理解决跨域
  • 思路:前端和后端都用nginx代理到同一个地址8080,这样访问接口就不存在跨域限制

本地页面

  • 查询一个百度搜索接口,运行在http://localhost:8035

index.js

const path = '/s?ie=utf-8&mod=1&isbd=1&isid=32E40E4954198269&ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baidutop10&wd=%E9%98%BF%E9%87%8C%E8%BE%BE%E6%91%A9%E9%99%A2%E8%A3%81%E6%92%A4%E9%87%8F%E5%AD%90%E5%AE%9E%E9%AA%8C%E5%AE%A4&oq=%25E9%2598%25BF%25E9%2587%258C%25E8%25BE%25BE%25E6%2591%25A9%25E9%2599%25A2%25E8%25A3%2581%25E6%2592%25A4%25E9%2587%258F%25E5%25AD%2590%25E5%25AE%259E%25E9%25AA%258C%25E5%25AE%25A4&rsv_pq=aa3000c700059c97&rsv_t=dc43G%2B%2BXaqAS56%2B0UrBoDRNzBFYzNO23OT7ktw83SdWrOCxFOH0i2bYVSOJvWtCQCg&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_btype=t&bs=%E9%98%BF%E9%87%8C%E8%BE%BE%E6%91%A9%E9%99%A2%E8%A3%81%E6%92%A4%E9%87%8F%E5%AD%90%E5%AE%9E%E9%AA%8C%E5%AE%A4&rsv_sid=undefined&_ss=1&clist=&hsug=&f4s=1&csor=0&_cr1=45968';

function testNginxFetch() {
  fetch(`https://www.baidu.com${path}`).then(res => {
    console.log(res, 'res');
  })
}

testNginxFetch()
  • 不出意外的会报cors错误
    在这里插入图片描述

修改nginx配置文件

  • mac地址:/usr/local/etc/nginx/nginx.conf
  • windows地址示例:D:\nginx-1.16.0\conf\nginx.conf

nginx.conf

server {
	# 监听端口
    listen 8080;

	location / {
			# 以/开头的请求会被代理到8080
            proxy_pass http://localhost:8035;
    }
    location /s {
    	  # 以/s开头的请求也会被代理到8080
          proxy_pass https://www.baidu.com;
    }
}

index.js

// 修改请求url,删除域名前缀
fetch(path).then(res => {
    console.log(res, 'res');
})

启动nginx

● mac 命令

sudo nginx // 启动
sudo nginx -s stop // 停止
sudo nginx -s reload // 重新加载
----------------------------------------
● windows 命令(cmd 进入Nginx解压目录 执行以下命令)

启动Nginx:start nginx
快速停止或关闭Nginx:nginx -s stop
正常停止或关闭Nginx:nginx -s quit
配置文件修改重装载命令:nginx -s reload
  • mac上启动
    cmd输入命令:sudo nginx
  • windows上启动
    cmd输入命令:start nginx

打开localhost:8080查看结果

  • 可以看到前后端都运行在8080服务器,且百度的接口成功响应
    前后端都运行在8080端口
    后端来自百度的响应

http://www.kler.cn/a/147140.html

相关文章:

  • 华为开源自研AI框架昇思MindSpore应用案例:人体关键点检测模型Lite-HRNet
  • C++11(四)---可变参数模板
  • web浏览器环境下使用window.open()打开PDF文件不是预览,而是下载文件?
  • 鸿蒙中如何实现图片拉伸效果
  • git简介和本地仓库创建,并提交修改。git config init status add commit
  • 31.3 XOR压缩和相关的prometheus源码解读
  • docker 安装jekins
  • 西南科技大学信号与系统A实验一(信号的产生与时域运算)
  • 微软Azure AI新增Phi、Jais等,40种新大模型
  • 对Laxcus分布式操作系统的认知、价值、痛点解决的回答
  • 第三节HarmonyOS DevEco Studio了解基本工程目录
  • JSP 循环ajax 返回的集合
  • 香港科技大学广州|智能制造学域博士招生宣讲会—天津大学专场
  • Apache换行解析漏洞(CVE-2017-15715)
  • 红米手机如何远程控制荣耀手机?
  • 在OpenCV中基于深度学习的边缘检测
  • nuxt、vue实现PDF和视频文件的上传、下载、预览
  • go语言基础 break和contine区别
  • Mac 搭建本地服务器
  • 云原生系列Go语言篇-泛型Part 1
  • 2-Python与设计模式--前言
  • MIT6.824-Raft笔记:Raft初探、副本间log时序
  • Electronica慕尼黑电子展 Samtec团队与21ic分享虎家产品与方案
  • AI - Steering behaviors(转向系统)
  • 阶段二:进阶知识(掌握Python的常用设计模式)
  • FinGPT:金融垂类大模型架构