让nginx网关扛下所有攻击

勿以君子之心度小人之腹

我的小破网站也玩了几年,也就是我个人在线简历啊,个人音乐网站啊,数据管理系统等内容,没有啥值钱的数据,我就觉得安全性没有那么重要,谁会吃饱了撑的来破坏我这些东西?做那些损人而不利己的事?

但是我的网站遭遇过一次几乎灭顶之灾,几年积攒的数据被清空,能改的被改动,但是我的后台服务没有日志功能,我完全查不到是谁操作了啥。

后来我给服务加了日志系统,发现每天凌晨都有大量莫名其的请求打到我的服务上,我惊呆了,人教人学不会,事儿教人一次就会。所以安全意识要强,正如标题"勿以君子之心度小人之腹 "

所以这次要把网关弄好,别给黑客一点可乘之机,主要是nginx配置优化和后端服务隐藏

nginx配置优化

ini 复制代码
server { 
    listen 80; 
    server_name bj985.com www.bj985.com;
    # 安全规则
    limit_req zone=req_limit burst=15 nodelay;

    if ($request_method !~ ^(GET|HEAD|POST)$) {
        return 403;
    }

    # 只拦截危险脚本,不拦图片
    location ~* \.(php|jsp|asp|aspx|sh|py|cgi)$ {
        deny all;
        return 403;
    }
    # 【关键】拦截指定关键字
    location ~* (manager|phpmyadmin|shell|cmd) {
        deny all;
        return 403;
    }

    # 主页面转发(已删除 limit_except,图片正常)
    location / {
        proxy_pass http://127.0.0.1:8088;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # 自动跳转 PC / 手机
        set $is_mobile 0;
        if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android)) {
            set $is_mobile 1;
        }
        if ($is_mobile = 0) {
            rewrite ^/$ /personalpc break;
        }
        if ($is_mobile = 1) {
            rewrite ^/$ /personal2 break;
        }
    }

    location ^~ /api {
        rewrite ^/api/(.*)$ /$1 break;
        proxy_pass http://xxx.xxx.xxx.xxx:8088;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

完全隐藏后端服务

后端服务不要直接对外提供服务,比如我的服务跑在8088端口,使用IP:8088完全访问不了后台任务接口,所有服务必须经过nginx转发,如果你的gin服务是这样写的

css 复制代码
r := gin.New()
r.Run(":8080")
// 或者
r.Run("0.0.0.0:8080")

一定要改成

css 复制代码
r := gin.New()
r.Run("127.0.0.1:8080")

这样即使黑客绕过了nginx网关,使用你的ip加端口也访问不了你的后台服务

加服务器日志,

这个也是必须的,不然有问题完全摸瞎,完全查不到

相关推荐
我有满天星辰12 分钟前
Vue 指令完全指南:从 Vue 2 到 Vue 3 的演进与实战
前端·javascript·vue.js
光影少年14 分钟前
RN 渲染原理:不依赖WebView,原生控件渲染
前端·react native·react.js·前端框架
小白学过的代码15 分钟前
# flv.js / mpegts.js 播不了国标摄像头(H.265 + G.711A)?纯前端 Jessibuca 无后端方案(附完整代码)
前端·javascript·h.265
console.log('npc')19 分钟前
AI Agent 前端流式渲染核心技术文档(SSE \+ WebSocket \+ 打字机渲染)
前端·人工智能·websocket
智码看视界22 分钟前
Day19 Spring Boot启动优化:启动时间从8秒降到2秒
java·spring boot·后端·启动优化
法外狂徒129 分钟前
将 Pi Agent 接入 HagiCode 的实践之路
服务器·前端·人工智能
IT_陈寒36 分钟前
React中useEffect的依赖项把我坑惨了
前端·人工智能·后端
SQL-First布道者1 小时前
Spring JDBC Ultra 十边型战士
java·spring boot·后端·mysql·spring·mybatis
Dovis(誓平步青云)1 小时前
《精讲Spring Boot后端跑另一个端口:如何解决暴露服务器问题》
服务器·人工智能·spring boot·后端·生成对抗网络
广州华水科技1 小时前
单北斗GNSS在变形监测中的优势与应用分析
前端