DRAGON BLOG
首页
搜索
自用站点
  •   share-chart
  •   Web-SSH
  •   Uptime-Kuma
往期整理
  •   历史归档
  •   文章分类
  •   文章标签
关于我
DRAGON
文章
6
分类
3
标签
6
首页
搜索
自用站点
share-chart
Web-SSH
Uptime-Kuma
往期整理
历史归档
文章分类
文章标签
关于我
技术分享
NGINX的反向代理后的跨域问题
发布于: 2024-10-8
最后更新: 2024-11-21
次查看
开发
工具
type
status
date
slug
summary
tags
category
icon
password
comment

NGINX部署:解决跨域问题的全面指南

在现代web开发中,跨域资源共享(CORS)是一个常见的挑战。本文将指导你如何使用NGINX有效地解决这个问题,同时探讨不同的部署场景及其最佳实践。

部署场景概述

单域名部署

在单域名部署中,你的服务器IP(例如xxx.xx.86.92)直接处理所有请求。前端在上线环境中可以直接向 'http://xxx.xx.86.92/api'; 发送API请求。这种方法简单直接,但可能不适合所有应用场景。

多域名部署

多域名部署更为灵活,但需要额外的配置。例如:
  • 前端:abc.com
  • 后端:partner.abc.com
这种配置允许前后端分离,但需要正确处理跨域问题。

解决跨域问题的三种方法(选其一即可)

  1. 统一域名和端口:最直接的方法,但可能不适合所有项目结构。
  1. 使用NGINX网关:通过NGINX配置来处理跨域请求。以下是一个示例配置:
  1. 修改后端服务:在后端代码中处理跨域。有三种常见方法:
  • 使用@CrossOrigin注解
  • 添加全局Web请求拦截器
  • 定义新的corsFilter Bean
 

注意事项:

1.理解session.cookie.domain问题:
  • 推荐:如果你的前后端在不同子域下运行(如 abc.com 和 partner.abc.com),可以使用 .abc.com 作为 domain,允许在两个子域间共享 Cookie。
    • 如果前后端使用完全不同的域名,不共享 Cookie,只需确保后端配置 same-site: none 来支持跨域请求携带 Cookie。domain写后端的域名即可
       

NGINX和后端的角色分工

NGINX作为反向代理服务器,可以在请求到达后端之前处理跨域问题。后端则负责实际的业务逻辑处理。重要的是,跨域处理应该只在一个地方进行,以避免重复的CORS头导致浏览器拒绝请求。

实际部署示例

以下是一个实际的部署示例:
  • 前端域名(abc.com)配置为一个网站,直接在前端代码中指向后端域名。
  • 后端域名(partner.abc.com)不需要配置为单独的网站,只需配置SSL和反向代理到localhost:端口即可。

安全性考虑

在配置跨域时,安全性是首要考虑的因素:
  • 始终使用HTTPS加密通信
  • 谨慎配置CORS策略,只允许必要的源
  • 使用secure和httpOnly标志保护cookie
  • 实施内容安全策略(CSP)以防止XSS攻击

结论

正确配置NGINX来处理跨域问题是现代web开发中的一项重要技能。通过理解不同的部署场景、CORS的工作原理以及NGINX的配置方法,可以构建更安全、更高效的web应用。记住,在实际部署中要根据具体需求进行调整,并始终保持安全意识。
 
在配置NGINX时,理解proxy_pass指令末尾斜杠的作用至关重要。这个细节可能会对请求的转发产生重大影响。以下是一个相关的参考链接,深入探讨了这个问题:
NGINX的proxy_pass末尾斜杠的作用解析
这篇文章详细解释了proxy_pass指令中末尾斜杠的影响,包括如何影响URI的传递和重写。
 
提示:在实施任何配置更改之前,请务必在测试环境中进行充分测试。定期审查和更新你的安全策略,以应对不断变化的网络威胁。
 
  • 作者:DRAGON
  • 链接:https://dragonhub.me/article/nginx-deployed
  • 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章
Cherry Studio搭配DeepSeek + RAG知识库
通过Saas回源给tunnel加速
OpenWebUI中使用FLUX绘画(硅基流动)
JAVA序列化与反序列化通过Saas回源给tunnel加速
Loading...
目录
0%
NGINX部署:解决跨域问题的全面指南部署场景概述单域名部署多域名部署解决跨域问题的三种方法(选其一即可)注意事项:NGINX和后端的角色分工实际部署示例安全性考虑结论
DRAGON
DRAGON
一个普通的干饭人🍚
文章
6
分类
3
标签
6
最新发布
Cherry Studio搭配DeepSeek + RAG知识库
Cherry Studio搭配DeepSeek + RAG知识库
2025-2-7
NGINX的反向代理后的跨域问题
NGINX的反向代理后的跨域问题
2024-11-21
JAVA序列化与反序列化
JAVA序列化与反序列化
2024-11-20
OpenWebUI中使用FLUX绘画(硅基流动)
OpenWebUI中使用FLUX绘画(硅基流动)
2024-11-16
通过Saas回源给tunnel加速
通过Saas回源给tunnel加速
2024-11-16
docker网桥配置完后,需要开启转发不然容器启动后,就会没有网络。
docker网桥配置完后,需要开启转发不然容器启动后,就会没有网络。
2024-11-16
公告
🎉这是个空荡荡的小窝🎉
 
 
目录
0%
NGINX部署:解决跨域问题的全面指南部署场景概述单域名部署多域名部署解决跨域问题的三种方法(选其一即可)注意事项:NGINX和后端的角色分工实际部署示例安全性考虑结论
2023-2025DRAGON.

DRAGON BLOG | 一个普通的干饭人🍚

Powered byNotionNext 4.7.7.