热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nginx反向代办跨域基础设置与罕见误区

近来公司前后端星散,前端自力供应页面和静态效劳很天然的就想到了用nginx去做静态效劳器。同时因为跨域了,就想应用nginx的反向代办去处置惩罚一下跨域,但是在解决题目的同时,发明

近来公司前后端星散,前端自力供应页面和静态效劳很天然的就想到了用nginx去做静态效劳器。同时因为跨域了,就想应用nginx的反向代办去处置惩罚一下跨域,但是在解决题目的同时,发明网上有些计划的确是存在一些题目,在这里总结一下基础设置,也聊一下罕见的设置题目。

Nginx接口效劳反向代办基础设置

server {
listen 8443; # 监听的端口号
server_name a.test.com; # 效劳器称号
client_max_body_size 100m; # 定义读取客户端要求头的超时时刻
ssl on;
ssl_certificate test.pem;
ssl_certificate_key test.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;
ssl_prefer_server_ciphers on;
location / {
root /test-static-app; # 静态资本目次
index index.html index.htm;
try_files $uri $uri/ /index.html; # 动态剖析目次,合营vue的history形式
}
}

基础设置完成了页面及静态效劳器的基础功能,并能够完成运用vue的history形式时的路由剖析。进一步的,为了完成向接口效劳器的一致转发,我们需要和后端开发人员划定接口名的前缀,比方一切接口的相对途径都以api开首,此时我们能够增加以下设置(和上一个location平级),

...
location /api {
proxy_pass https://b.test.com; # 设置代办效劳器的协媾和地点
proxy_COOKIE_domain b.test.com a.test.com; # 修正COOKIE,针对request和response相互写入COOKIE
}
...

个中重要依靠proxy_pass,完成将a.test.com下的/api/x接口转发到了b.test.com下面,这个历程大抵以下
《Nginx反向代办跨域基础设置与罕见误区》

COOKIE的交互重要就是proxy_COOKIE_domain,加上下面这段

proxy_COOKIE_domain b.test.com a.test.com;

这个完成了,a.test.com和b.test.com域名之间COOKIE的通报与回写。这里的明白有点误区,请移步到细致诠释Nginx反向代办明白误区之proxy_COOKIE_domain

假如用node来模仿一下的话,大抵以下

module.exports = (router) => {
router.get('/api/index/getCmsInfo', async function (ctx, next) {
// 接口转发
let result = await superagent.post('https://b.test.com/api/card/home').set(browserMsg)
// 猎取返回的set-COOKIE,并设置header
let setCOOKIE = result.headers['set-COOKIE']
if (setCOOKIE) {
ctx.response.header['set-COOKIE'] = setCOOKIE
}
// 返回
ctx.response.body={
success: true,
result: result.body
}
})
}

综上nginx反向代办的实质实在就是接口效劳的转发与header的处置惩罚,细致想一想也就轻易明白了。

罕见误区

1、无用的ACA-Header ?
网上许多的nginx跨域设置内里都加了跨域header设置相干的内容,比方

add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' "true";
add_header Access-Control-Allow-Headers X-Requested-With;

想一想上面的道理,列位看官以为这个还有效么?ACA(Access-Control-Allow-)系列的header自身是为了cors中做协商跨域而设置的,在这里配这个纯属脱裤子放屁节外生枝。
2、proxy_pass 域名带不带‘斜杠/’ ?
一样的,在网上看到了有的网友在设置proxy_pass的时刻,会在背面加一个斜杠,以下,然后说报错啦,找不到接口啦~咋整啊~

...
location /api {
#proxy_pass https://b.test.com;
proxy_pass https://b.test.com/;
}
...

看到这个我们来想一想哈,proxy_pass的作用是抓发,加了斜杠意味着一切的/api要求都邑转发到根目次下,也就是说 /api 会被 / 替换,这个时刻接口途径就变了,少了一层/api。而不加斜杠的时刻呢?这代表着转发到b.test.com 的域名下,/api的途径不会丧失。
针对这类状况,假如后端接口一致有了划定前缀,比方/api,那你这里就不要设置斜杠了。另一种状况,后端接口shit一样,没有一致前缀,这边又要辨别,那就在前端一切接口都加一个一致前缀,比方/api,然后经由过程加斜杠来替换掉好了~

以上就是本次的全部内容了~本日的《新闻联播》播送完了,感谢收看,再会~再会~


推荐阅读
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 起因由于我录制过一个小程序的课程,里面有消息模板的讲解。最近有几位同学反馈官方要取消消息模板,使用订阅消息。为了方便大家容易学 PythonFlask构建微信小程序订餐系统 课程。 ... [详细]
  • 问题描述:域名已经备案,我全部都有,也在后台配置了,但是手机预览,还是请求失败,PC端是可以请求 ... [详细]
author-avatar
勇敢的刺鸟宝贝4164053383
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有