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

Linux系统Nginx服务(四)

一、Nginx 配置跨域 CORS

浏览器的同源策略会限制不同源之间的资源交互,Nginx 可以作为代理服务器解决跨域问题。

1.1 跨域的定义与限制

  • 同源:协议、域名、端口三者均相同
  • 跨域限制
    • 限制读取不同源的 Cookie、IndexDB、LocalStorage 等数据
    • 限制不同源的 JavaScript 操作当前 DOM
    • 限制 XMLHttpRequest 等方式向不同源发送数据

1.2 Nginx 解决跨域的原理

通过 Nginx 作为中间代理,使浏览器认为是与同源服务器交互,而 Nginx 实际将请求转发到目标服务器,从而绕过浏览器的同源策略限制。

1.3 跨域配置示例

假设前端域名为 fe.server.com,后端接口域名为 dev.server.com,配置如下:

bash

server {listen 80;server_name fe.server.com;  # 与前端同源的域名location / {proxy_pass http://dev.server.com;  # 转发到实际后端服务# 设置请求头proxy_set_header Host dev.server.com;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 设置跨域相关响应头add_header Access-Control-Allow-Origin http://fe.server.com;add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE;add_header Access-Control-Allow-Headers Content-Type,Authorization;}
}

二、Nginx 防盗链设置

防盗链用于防止其他网站盗用你的静态资源(如图片、CSS、JS 等),避免带宽浪费和资源滥用。

2.1 防盗链原理

基于 HTTP 协议的 Referer 头信息,该头信息记录了请求的来源页面。通过判断 Referer 信息,允许可信来源访问资源,拒绝非法来源。

2.2 防盗链核心配置

bash

valid_referers none | blocked | server_names | strings ....;
  • none:允许没有 Referer 的请求
  • blocked:允许 Referer 不以 http:// 或 https:// 开头的请求
  • server_names:允许指定域名 / IP 的请求(白名单)

2.3 防盗链配置示例

bash

server {listen 80;server_name www.example.com;charset utf-8;  # 支持中文# 对静态资源设置防盗链location ~* \.(js|css|png|jpg|gif)$ {# 允许自身域名和指定可信域名访问valid_referers www.example.com trusted.com;# 如果来源不合法,返回 403 错误if ($invalid_referer) {return 403;}root /usr/share/nginx/html;}
}

2.4 配置说明

  • 防盗链配置需放在 location 块中,针对需要保护的资源类型进行设置
  • ~* \.(js|css|png|jpg|gif)$ 表示匹配所有指定后缀的静态资源
  • valid_referers 后可跟多个可信来源,用空格分隔
  • $invalid_referer 是 Nginx 内置变量,当来源不在可信列表时为 true
http://www.dtcms.com/a/406320.html

相关文章:

  • Linux to go Ubuntu 22.04 不匹配无线网卡 MT7925 的解决方法
  • Go语言在区块链开发中的应用场景详解
  • go的基础数据结构 slice源码阅读
  • 百度网盟推广 网站四川建设网有限责任公司官网
  • 破局渠道垄断:青蓝的流量入口变现路径
  • 【C++STL :string类 (二) 】从接口应用到内存模型的全面探索
  • 学做面包到什么网站网站点击按钮回到页面顶部怎么做
  • 领航 网站设计主机屋怎么做网站
  • 在VTK中实现相机自动绕轴旋转
  • 关于解决switch开关属性中active-value=“1“为数值形失败的问题
  • Seata 深度解析:微服务分布式事务管理的实践指南
  • LeetCode:53.课程表
  • 中国县域经济韧性(2006-2021)
  • MySQL零基础学习Day3——函数和约束
  • Bililive-go+cpolar:跨平台直播录制的远程管理方案
  • 飞马无人机正射/倾斜影像数据预处理
  • 2025 AI 技术跃迁与产业融合:从实验室到价值场
  • 济源网站建设价格蓝色系网站
  • MySQL InnoDB缓冲池优化全指南
  • Redis 内存淘汰策略 LRU 和传统 LRU 差异
  • 焞煌网站怎么做产品营销型网站建设
  • 【C++】:stack、queue和deque全面讲解
  • 【MySQL学习笔记】数据库的CURD(一)
  • 使用Excel在标签打印软件快速新建标签,表格导入并实现批量打印
  • WEB日常刷题练习(1)
  • 信阳网站建设的费用潍坊网站建设维护
  • Kafka-消息不丢失
  • 如何查看一个网站用什么程序做的wordpress文章发布保存都不行
  • ReactFlow:构建交互式节点流程图的完全指南
  • 实战:基于 BRPC+Etcd 打造轻量级 RPC 服务——从注册到调用的核心架构与基础实现