让nginx网关扛下所有攻击
|
freeflydom
2026年6月2日 9:57
本文热度 160
|
勿以君子之心度小人之腹
我的小破网站也玩了几年,也就是我个人在线简历啊,个人音乐网站啊,数据管理系统等内容,没有啥值钱的数据,我就觉得安全性没有那么重要,谁会吃饱了撑的来破坏我这些东西?做那些损人而不利己的事?
但是我的网站遭遇过一次几乎灭顶之灾,几年积攒的数据被清空,能改的被改动,但是我的后台服务没有日志功能,我完全查不到是谁操作了啥。
后来我给服务加了日志系统,发现每天凌晨都有大量莫名其的请求打到我的服务上,我惊呆了,人教人学不会,事儿教人一次就会。所以安全意识要强,正如标题“勿以君子之心度小人之腹”
所以这次要把网关弄好,别给黑客一点可乘之机,主要是nginx配置优化和后端服务隐藏
nginx配置优化
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
}
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
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://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
}
}
完全隐藏后端服务
后端服务不要直接对外提供服务,比如我的服务跑在8088端口,使用IP:8088完全访问不了后台任务接口,所有服务必须经过nginx转发,如果你的gin服务是这样写的
r := gin.New()
r.Run(":8080")
// 或者
r.Run("0.0.0.0:8080")
一定要改成
r := gin.New()
r.Run("127.0.0.1:8080")
这样即使黑客绕过了nginx网关,使用你的ip加端口也访问不了你的后台服务
加服务器日志,
这个也是必须的,不然有问题完全摸瞎,完全查不到
转自https://juejin.cn/post/7645280506545111094
该文章在 2026/6/2 9:58:23 编辑过