【nginx】转发配置、漏洞整改

转发配置

常见的接口调用配置:

location /com_api/ {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_pass http://后端服务IP:后端服务端口号/;
}

若转发调不通时(常出现在调用第三方系统时),考虑去掉头消息的配置。

location /weather_api/ {
    #proxy_set_header X-Real-IP $remote_addr;
    #proxy_set_header Host $http_host;
    proxy_pass http://wthrcdn.etouch.cn/;
}

若是本地开发的代理配置,则需要加上changeOrigin: true。

'/weather_api/': {
  target: 'http://wthrcdn.etouch.cn',
  changeOrigin: true,
  pathRewrite: {
    '^/weather_api/': ''
  }
},

这里有个遗留的问题:
如果weather_api在nginx没有配置,代码中调用了接口,但是不报错404。
然而如果本地开发的时候没配置代理,代码中调用接口时就会报错404。
为啥只要通过nginx转发就不报错呢?但是其他的接口nginx不配置也会404呀?

漏洞扫描安全评估整改

1、nginx版本升级版本大于1.23.2

因为我们使用docker部署的,只需修改docker-compose.yml文件:

version: "3.7"
services:
  base-nginx:
    restart: always
    image: nginx:1.24.0
    container_name: base-nginx
    ……

修改镜像的版本号image: nginx:1.24.0,重启服务即可。
若出现docker报错:ERROR: missing signature key,可能是Docker version 17.12.1-ce版本太低了不支持,考虑升级到image: nginx:1.22.1。

2、修改nginx配置

在http下添加:

server_tokens off;
add_header X-Frame-Options DENY;
add_header X-XSS-Protection  "1; mode=block";
add_header X-Content-Type-Options nosniff;

需要注意的是,如果项目用到了iframe,不能配置add_header X-Frame-Options DENY;

  • add_header X-Frame-Options ALLOWALL; #允许所有域名iframe
  • add_header X-Frame-Options DENY; #不允许任何域名iframe,包括相同的域名
  • add_header X-Frame-Options SANEORIGIN; #允许相同域名iframe,如a.test.com允许b.test.com
  • add_header X-Frame-Options ALLOW-FROM uri; #允许指定域名iframe,
    所以看着来配置吧,我们是直接去掉了。

3、参考文档

https://blog.csdn.net/weiweiyixiaohhl/article/details/132795873
https://blog.csdn.net/qq_23934063/article/details/121076732
https://blog.csdn.net/jane_xing/article/details/119564046

另外pdf.js存在CVE-2024-4367漏洞

pdfjs存在CVE-2024-4367漏洞,可被执行任意js代码。
需要进行安全性升级:修复建议,将PDF.js 更新到版本 4.2.67 或更高版本。

1、在npm官网找到对应包

https://www.npmjs.com/package/pdfjs-dist
使用npm install 命令下载以后使用方式不对呀,找不到html文件。

2、pdfjs官网找包

看到右侧的Homepage:mozilla.github.io/pdf.js/
于是去官网下载了稳定版本,好像就可以了,使用方法保持和原来的一致。
如果还是不行并且报错如下图所示:
在这里插入图片描述
因为浏览器版本太低了!!!
找了半天原因,直到看到这个:
https://github.com/mozilla/pdf.js?tab=readme-ov-file#online-demo
我的浏览器属于Older browsers,才能打开;然而Modern browsers的示例,我打开报错。
晕死,还以为是接口请求的问题,先请求到接口再window.open各种都尝试了都不行。

3、部署后报错

本地正常了,然后部署到现场发现报错:
Failed to load module script: Expected a JavaScript module script but the server responded
百度后发现,在nginx配置的server下加上如下语句就好了:

include mime.types;
types
{
  application/javascript mjs;
}

参考文章:https://blog.csdn.net/ken_coding/article/details/136761141
但是,后面发现文件能打开了,控制台继续报错:

api.js:2149 Refused to create a worker from '***/static/pdfjs/build/pdf.worker.mjs' because it violates the following Content Security Policy directive: "worker-src blob:".

说明,nginx配置了安全策略,查看nginx配置文件,确实有如下语句:

add_header Content-Security-Policy "style-src 'self' 'unsafe-inline' http://at.alicdn.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://pv.sohu.com https://*.amap.com; worker-src blob:";

但是一个环境报错,一个环境不报错,对比了nginx的配置差异。
不报错的环境,在location / {和location ~*\.(js|css|png|jpg|jpeg|gif|ico)$ {下配置了允许跨域的语句,如下语句:

add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

加上之后果然就不报错了。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值