nginx如何防止非 server_name 配置的域名访问

在 Nginx 中,如果客户端请求的域名未在 server_name 指定的配置中匹配,Nginx 仍然会将请求转发到默认的 server 块。为了防止非 server_name 配置的域名访问,可以使用以下几种方法: 方法 1:使用默认 server 块拦截未匹配的域名 在 Nginx 配置文件中(通常是 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf),添加一个默认的 server 块,只允许 server_name 明确配置的域名访问,其他所有未匹配的域名都返回 444(直接断开连接)。 1 2 3 4 5 6 7 server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 444; } 解释 listen 80 default_server;:表示该 server 块是默认的服务器,所有未匹配的请求都会进入这里。 server_name _;:这个 _ 是一个通配符,表示未匹配的任何域名都会进入该 server 块。 return 444;:返回 444 状态码,直接断开连接,不给客户端任何响应,提高安全性。 方法 2:使用 if 语句在特定 server 块中拦截 如果不想使用默认 server 块,也可以在你的业务 server 块中检查 Host 头,拒绝非指定域名的访问。 1 2 3 4 5 6 7 8 9 10 11 12 server { listen 80; server_name example.com www.example.com; if ($host !~* ^(example\.com|www\.example\.com)$) { return 403; } location / { proxy_pass http://127.0.0.1:8080; } } 解释 if ($host !~* ^(example\.com|www\.example\.com)$):检查 Host 头,如果不符合 example.com 或 www.example.com,则返回 403 Forbidden。 return 403;:拒绝访问。 ⚠️ 注意:Nginx 官方不推荐 if 语句用于控制访问,但在简单场景下可以使用。 ...

2025年6月18日 · 2 分钟 · 浅忆

Docker-安装

Linux docker、docker-compose安装命令 ...

2025年6月1日 · 1 分钟 · 浅忆

Docker-开发相关镜像

开发过程中常用镜像。 ...

2025年6月1日 · 15 分钟 · 浅忆

Git 配置代理:HTTPS 和 SSH 仓库地址配置方式

这里记录一下 Git 配置代理的几种常见方式。 首先要看远程仓库地址是哪种格式: ...

2025年5月25日 · 2 分钟 · 浅忆

Git 如何忽略已经提交过的文件或目录

遇到个问题是:明明已经把 .idea/ 写进了 .gitignore,但 VS Code 里还是显示这些文件,Git 也还是在跟踪它们。 原因很简单:.gitignore 只对还没有被 Git 跟踪的文件生效。 如果某个文件或目录之前已经被提交过,Git 就已经开始管理它了。后面再把它写进 .gitignore,并不会自动停止跟踪。 ...

2025年4月25日 · 1 分钟 · 浅忆

Windows下ssh-config文件的作用

.ssh/config 本质上就是 SSH 的连接配置文件。 它最适合这些场景: 多个 Git 账号; 多个服务器; 不同服务器使用不同端口; 不同主机使用不同私钥; 想给复杂 SSH 地址起一个简单别名。 配置好以后,日常使用 Git 或 SSH 会方便很多,也能避免每次手动指定一堆参数。 ...

2025年4月25日 · 1 分钟 · 浅忆

生产环境对于文件服务注意事项

生产环境对于文件服务,尤其是对外提供访问的场景,需要注意以下几点,以防止伪装文件被解析执行等安全风险,从而被黑产利用上传恶意文件,如上传 html 作为钓鱼、菠菜、跳转 进行传播,利用你的域名当作跳板,导致域名封、通报、用户上当受骗等问题。 ...

2025年2月7日 · 2 分钟 · 浅忆

Minio Docker 搭建

创建数据和配置目录 1 2 mkdir -p /opt/minio/{data,config,init} cd /opt/minio 创建docker-compose.yml 注意: 此配置中 minio 的环境变量不能设置MINIO_SERVER_URL(文章末尾会有说明),除非服务器做了 FQDN,否则会出现webui页面登录不上的情况,即报错{"message":"invalid Login"},但可配置MINIO_BROWSER_REDIRECT_URL做webui的重定向。 以下的镜像是minio最后一个带web控制台的版本,如果需要最新版本请参考Minio官方文档。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 version: "3.8" services: minio: image: minio/minio:RELEASE.2025-04-22T22-12-26Z container_name: minio restart: unless-stopped # 对外端口:9000(S3 API) 9001(Console) ports: - "9000:9000" - "9001:9001" # 数据和配置持久化 volumes: - ./data:/data - ./config:/root/.minio # 生产建议:用 .env 管理账号密码 environment: # 管理员账号密码(必须设置;不建议用默认值) MINIO_ROOT_USER: ${MINIO_ROOT_USER} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD} # 可选:设置对外显示的访问地址 # 未做 FQDN 不要设置 # MINIO_DOMAIN=example.com # 服务器地址,未做 FQDN 不要设置 # MINIO_SERVER_URL=http://example.com # 控制台地址,仅设置 重定向 控制台地址 # MINIO_BROWSER_REDIRECT_URL: "https://console.example.com" # 启动命令 command: server /data --console-address ":9001" # 健康检查:MinIO 自带 health endpoint healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 10s timeout: 5s retries: 5 配置 .env 1 2 MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=Password_123! 启动 在 docker-compose.yml 所在目录运行: ...

2025年1月30日 · 4 分钟 · 浅忆

关于续订程序出现授权出错问题

由于微软将续订程序的回调地址拉黑(会认为使用此回调地址的应用为钓鱼应用),从而将创建的 应用程序 禁用,导致应用无法进行授权。 之前已经授权过的应用暂时不影响(在应用 access_token有效期内),今天会临时加急更新一版,明天下午上线,临时解决这个问题。 同时新版本预计年后上线。 查看应用是否被禁用

2023年1月14日 · 1 分钟 · 浅忆

为知笔记 Docker版本 私有部署

目前已经使用docker私有部署的为知快2年了,之前用过 onenote、印象笔记、有道笔记、notion、蚂蚁笔记等等,全部用过一段时间后还是选择了为知笔记,一是服务的在自己手里,数据配合脚本实时同步到OneDrive,二是目前重构版的客户端确实好用很多,不像之前要卡半天~ 看网上一直在吹这个notion,不得不说操作上确实很爽,但每次打开不嫌慢吗? 下面是为知的docker搭建方式,其实官方写得很清楚了~ 1 2 3 4 5 6 7 8 docker run --name wiz \ --restart=always \ -it -d \ -v ~/wizdata:/wiz/storage\ -v /etc/localtime:/etc/localtime \ -p 8080:80 \ -p 9269:9269/udp \ wiznote/wizserver nginx 反代 1 2 3 4 5 6 7 8 location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header x-wiz-real-ip $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://ip:8081; }

2021年12月4日 · 1 分钟 · 浅忆