当前位置: 代码网 > 服务器>网络>SSL > Nginx进阶配置实现SSL证书部署与资源防盗链实操

Nginx进阶配置实现SSL证书部署与资源防盗链实操

2026年04月30日 SSL 我要评论
在日常web服务运维里,nginx不光能做反向代理、分担服务器压力,在数据传输安全和资源保护这两块的配置也特别重要。一、ssl证书部署:搞定https加密访问https靠ssl/tls协议给数据传输加

在日常web服务运维里,nginx不光能做反向代理、分担服务器压力,在数据传输安全和资源保护这两块的配置也特别重要。

一、ssl证书部署:搞定https加密访问

https靠ssl/tls协议给数据传输加密,能避免数据被偷、被篡改,现在做网站基本都得配。要注意的是,nginx默认没装处理ssl的模块,得先手动编译安装这个模块,之后才能配置证书。

1.1 编译安装ssl模块

如果已经装过nginx了,不用重新装整个软件,进入当初解压nginx安装包的目录,重新配置编译就行。这样能保留之前的所有模块,只新增ssl模块,不会覆盖已有的配置。

# 进入nginx解压目录
cd /opt/module/nginx-1.13.7
# 重新配置,新增ssl模块(保留原有模块)
./configure \
--prefix=/opt/module/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi  \
--with-http_ssl_module
# 编译安装(仅编译新增模块,不覆盖原有文件)
make && make install

1.2 https核心配置

先把申请好的ssl证书(后缀是.crt)和私钥文件(后缀是.key),复制到nginx的配置文件夹里。然后配置443端口——这是https的默认端口,配置完就能实现加密访问了。另外可以优化一下协议和加密规则,把那些不安全的旧协议关掉,进一步提升安全性。

server {
    listen       443 ssl; # 显式声明ssl,替代旧版ssl on;
    server_name  www.imoocdsp.com; # 绑定已备案域名
    # 配置证书和私钥路径
    ssl_certificate      1_www.imoocdsp.com_bundle.crt; # 完整证书链(含中间证书)
    ssl_certificate_key  2_www.imoocdsp.com.key; # 证书私钥
    # ssl会话优化
    ssl_session_cache    shared:ssl:1m; # 共享会话缓存
    ssl_session_timeout  5m; # 会话超时时间
    # 安全协议与加密套件(禁用旧协议,启用强加密)
    ssl_protocols tlsv1.2 tlsv1.3; # 仅保留安全协议,禁用tls1.0/1.1
    ssl_ciphers ecdhe-rsa-aes128-gcm-sha256:high:!anull:!md5:!rc4:!dhe:!3des;
    ssl_prefer_server_ciphers on; # 优先使用服务器端加密套件
    # 启用hsts,强制浏览器使用https
    add_header strict-transport-security "max-age=31536000; includesubdomains" always;
    # 业务请求转发
    location / {
        proxy_pass http://tomcats/;
        index  index.html index.htm;
    }
}

补充个小优化:开了tls1.3协议能让加密更快,加个hsts响应头能防止浏览器退回到不安全的http。用ssl labs这个工具测试一下,还能把网站安全等级提到a+。

二、http转https:强制加密访问

为了让所有用户都走https访问,咱们得配置80端口(http的默认端口)。只要有人用http访问,就自动把他转到https上,而且用301永久重定向——这样既安全,也不会影响搜索引擎收录咱们的网站。

server {
    listen 80; # 监听http默认端口
    server_name nature.us.com author-welcome.nature.us.com springernature.us.com; # 绑定对应域名
    # 301永久重定向,保留请求路径
    return 301 https://$server_name$request_uri;
}

这里要注意:重定向必须用301永久重定向,别用302临时重定向。不然会出现反复跳转的情况,用户体验差,还会影响网站在搜索引擎里的排名。

三、nginx防盗链:保护静态资源安全

网站上的图片、视频、css这些静态文件,很容易被别的网站直接盗用。别人一盗用,咱们服务器的带宽就白浪费了,流量成本也会增加。nginx能靠http里的referer请求头做防盗链,大部分非法盗用请求都能拦下来。

3.1 防盗链核心原理

核心原理很简单:referer 就像个“来源标签”,会告诉服务器这个请求是从哪个网址发过来的。咱们在nginx里用 valid_referers 设置好“允许访问的合法域名”,不是从这些域名来的请求,就判定为非法,要么拒绝访问,要么转到自定义的错误页面。

3.2 实战配置方案

下面以图片为例,教大家配置防盗链:只允许咱们自己的域名(包括子域名)访问图片,其他网站盗用就跳转到自定义错误页,既保护了资源,也不会让对方看到生硬的报错。

# 匹配图片资源后缀(可根据需求扩展至css、js等)
location ~^/.*\.(png|jpg|gif|jfif|jpeg|webp) {
    valid_referers  www.mbqm.com *.mbqm.com; # 允许主域名及子域名访问
    if ($invalid_referer){
        # return 403; # 简单拦截,返回403禁止访问
        rewrite  ^/  http://ip:8080/error.html; # 跳转自定义错误页面
        break;
    }
    root   html; # 静态资源存储目录
    expires 3d; # 配置浏览器缓存,减少重复请求
}

3.3 防盗链局限性与应对

不过要说明下,这个防盗链不是100%保险——有些技术能伪造referer标签绕过拦截,但对付大部分普通盗用足够了。如果想更安全,还能搭配令牌验证、给资源加水印这些方式。

如果怕别人伪造referer盗用咱们的资源,也能在自己网页的代码里加下面这行,这样就能隐藏referer信息,让对方没法伪造来源。

<meta name="referrer" content="no-referrer">

四、配置注意事项

  • ssl配置完别直接重启,先输nginx -t检查语法对不对,没问题再用nginx -s reload平滑重载,这样不会中断正在运行的服务。
  • ssl证书有有效期,免费证书一般就90天,记得定期续期。可以用自动化工具设置提醒,避免证书过期导致网站无法访问。
  • 配置防盗链时,要准确写对资源后缀(比如png、jpg),别把自己的合法请求拦了。允许访问的域名列表,也可以根据业务需求增减。

做好上面这些配置,实际用的时候,可以根据自己的业务情况调整参数,既保证安全,又不影响访问速度。

五、小总结

这篇文章就聚焦三个核心操作,装ssl证书实现https加密访问、把http请求强制转到https、防止静态资源被别人盗用,结合具体配置步骤和优化小技巧,搭建更安全、好用的web服务。

到此这篇关于nginx进阶配置实现ssl证书部署与资源防盗链实操的文章就介绍到这了,更多相关nginx ssl证书部署与资源防盗链内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com