在互联网应用中,图片存储是至关重要的一环。为了保证图片的安全性和访问速度,搭建一个基于 HTTPS 的图片存储服务器是最佳选择。本文将详细介绍如何在 Windows 环境下使用 Nginx 搭建一个 HTTPS 图片存储服务器,并涵盖域名购买、DNS 解析、SSL 证书申请与配置、Nginx 部署以及端口开放等关键步骤。
一、准备工作
-
Nginx: 下载 Windows 版本的 Nginx (建议选择稳定版)。
Q1: Nginx (engine x) 是什么? Nginx 是一款高性能的开源 Web 服务器、反向代理服务器、负载均衡器和 HTTP 缓存。 它以其高性能、稳定性、丰富的功能、简单的配置和低资源消耗而闻名。
Q2: Nginx 的主要用途:
- Web 服务器: Nginx 可以像 Apache 一样,直接对外提供静态网页服务。它擅长处理静态资源(如 HTML、CSS、JavaScript、图片等),效率非常高。
- 反向代理服务器: 这是 Nginx 最常见的用途之一。 客户端向 Nginx 发送请求,Nginx 再将请求转发给后端的服务器(如 Tomcat、Node.js 等)。 反向代理可以隐藏后端服务器的真实 IP 地址,提高安全性,并可以实现负载均衡。
- 负载均衡器: 当后端有多台服务器时,Nginx 可以将客户端的请求分发到不同的服务器上,从而实现负载均衡,提高系统的整体性能和可用性。 Nginx 支持多种负载均衡算法,如轮询、加权轮询、IP Hash 等。
- HTTP 缓存: Nginx 可以缓存静态和动态内容,减少后端服务器的压力,提高响应速度。
- 邮件代理服务器: Nginx 还可以作为邮件代理服务器,用于接收和转发邮件。
Q3: Nginx 的优点:
- 高性能: Nginx 采用事件驱动的异步非阻塞处理方式,能够处理大量的并发连接,性能非常高。
- 高可靠性: Nginx 具有高可靠性,可以长时间稳定运行。
- 低资源消耗: Nginx 占用资源非常少,可以在低配置的服务器上运行。
- 模块化设计: Nginx 采用模块化设计,可以根据需要选择和配置不同的模块。
- 配置简单: Nginx 的配置文件非常简洁易懂,易于学习和使用。
- 支持多种协议: Nginx 支持 HTTP、HTTPS、TCP、UDP、SMTP、POP3、IMAP 等多种协议。
- 开源免费: Nginx 是开源免费的,可以自由使用和修改。
-
域名: 注册一个域名,用于访问你的图片存储服务器。
-
阿里云账号: 用于购买域名和申请 SSL 证书。
二、为什么选择阿里云?
在众多域名注册商和云服务提供商中,我选择阿里云的原因如下:
- 国内领先的云服务商: 阿里云在国内拥有强大的基础设施和技术支持,能够提供稳定可靠的服务。
- SSL 证书免费申请: 阿里云提供免费的 DV SSL 证书,满足基本的 HTTPS 安全需求。
三、域名购买与 DNS 解析
购买域名: 登录阿里云控制台,进入域名注册页面,搜索并购买你想要的域名。(本人12元买了一个top域名/年)
实名认证: 按照阿里云的要求完成域名实名认证。
DNS 解析:
- 登录阿里云控制台,进入域名列表,找到你购买的域名,点击“解析”。
- 添加 AAAA 记录(优先):如果你的服务器支持 IPv6,将域名(@)解析到你的服务器的 IPv6 地址。(本人的家庭宽带提供IPv6公网IP,IPv4私网IP)
- 添加 A 记录(可选):将域名(@)解析到你的服务器的 IPv4 地址。
- 添加 CNAME 记录:将 www 子域名解析到你的域名(yourdomain.com)。
验证解析: 使用 nslookup 命令验证 DNS 解析是否生效。
nslookup yourdomain.com
确保返回的 IP 地址与你服务器的 IP 地址一致。
四、申请 SSL 证书
五、修改证书文件分隔符(重要!)
从阿里云下载的 SSL 证书文件,在 Windows 环境下,需要将文件中的换行符从 LF (Line Feed) 修改为 CRLF (Carriage Return Line Feed)。否则,Nginx 可能会无法正确加载证书。
- 使用文本编辑器: 使用 Notepad++ 或其他支持修改换行符的文本编辑器打开 .pem 和 .key 文件。
- 修改换行符: 在 Notepad++ 中,选择 “编辑” -> “文档格式转换” -> “转换为 Windows 格式 (CR LF)”。
- 保存文件: 保存修改后的 .pem 和 .key 文件。
六、Nginx 部署与配置
解压 Nginx: 将下载的 Nginx 压缩包解压到你想要安装的目录(例如:C:\\nginx)。
修改 Nginx 配置文件 (nginx.conf):
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri; # 将 HTTP 请求重定向到 HTTPS
}
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate cert/yourdomain.com.pem; # 修改为你的证书文件路径
ssl_certificate_key cert/yourdomain.com.key; # 修改为你的私钥文件路径
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html; # 修改为你的图片存储目录
index index.html index.htm;
}
# 映射资源路径
location /images/ {
root D:/images/; # 你的图片实际存储路径
autoindex on; # 开启目录浏览,方便测试
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
- ssl_certificate 和 ssl_certificate_key: 修改为你的 SSL 证书和私钥文件的实际路径。
- root: 修改为你的图片存储目录。
- location /images/: 配置图片访问路径,将 /images/ 映射到你的实际图片存储路径。
- autoindex on;: 开启目录浏览,方便测试。 注意:在生产环境中,强烈建议关闭 autoindex,以防止未经授权的访问。
- return 301 https://$host$request_uri;: 将所有 HTTP 请求重定向到 HTTPS,确保所有访问都通过安全连接。
创建图片存储目录: 在你的服务器上创建一个用于存储图片的目录(例如:D:\\images)。
启动 Nginx: 打开命令提示符,进入 Nginx 安装目录,运行 start nginx 命令启动 Nginx。
七、端口开放
确保你的 Windows 防火墙允许 80 端口(HTTP)和 443 端口(HTTPS)的入站连接。
New-NetFirewallRule –DisplayName "HTTPS 443 Port" –Direction Inbound –Action Allow –Protocol TCP –LocalPort 443
New-NetFirewallRule –DisplayName "HTTP 80 Port" –Direction Inbound –Action Allow –Protocol TCP –LocalPort 80
八、测试
九、安全加固(重要)
- 关闭目录浏览: 在 Nginx 配置文件中,将 autoindex on; 修改为 autoindex off;,防止未经授权的目录浏览。
- 配置访问控制: 使用 Nginx 的 allow 和 deny 指令,限制对图片存储目录的访问。
- 定期更新 Nginx: 及时更新 Nginx 版本,以修复安全漏洞。
- 使用 CDN: 考虑使用 CDN (内容分发网络) 来加速图片访问,并提高服务器的安全性。
十、总结
通过以上步骤,你就可以在 Windows 环境下成功搭建一个基于 HTTPS 的 Nginx 图片存储服务器。
希望这篇博客对你有所帮助! 欢迎在评论区留言交流。
评论前必须登录!
注册