• Nginx的https功能


    目录

    一.HTTPS功能简介

    二.https自签名证书

    三.防盗链


    一.HTTPS功能简介

    Web网站的登录页面都是使用https加密传输的,加密数据以保障数据的安全,HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议,HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。

    nginx 的https 功能基于模块ngx_http_ssl_module实现,因此如果是编译安装的nginx要使用参数ngx_http_ssl_module开启ssl功能,但是作为nginx的核心功能,yum安装的nginx默认就是开启的,编译安装的nginx需要指定编译参数--with-http_ssl_module开启

    在Nginx中,HTTPS是通过SSL/TLS协议来实现加密和安全通信的功能。以下是Nginx中使用HTTPS的简要介绍:

    1. SSL/TLS支持:Nginx内置了对SSL/TLS协议的支持,可以用来加密客户端和服务器之间的通信,确保数据传输的隐私和安全。

    2. 证书配置:为了启用HTTPS,你需要配置SSL证书,包括公钥、私钥以及可能的中间证书。Nginx需要这些证书来进行加密通信。

    3. 监听HTTPS端口:与HTTP服务不同,HTTPS服务默认运行在443端口上。你需要配置Nginx监听443端口,并将HTTPS流量引导到相应的站点或应用程序。

    4. SSL配置:Nginx提供了一系列的SSL配置选项,用于控制加密算法、协议版本、会话缓存等参数。这些配置可以影响服务器与客户端之间的加密通信方式。

    5. HTTP到HTTPS的重定向:通常情况下,你可能希望将所有的HTTP请求重定向到HTTPS,以确保访问安全。Nginx可以通过配置来实现这种重定向。

    6. 性能优化:Nginx提供了一些优化选项,比如SSL会话缓存、OCSP Stapling等,用于提高HTTPS通信的性能和安全性。

    总的来说,Nginx通过其灵活的配置和强大的性能,在实现HTTPS功能时提供了丰富的选项和功能。使用Nginx作为HTTPS服务器可以帮助你实现安全的加密通信,并保护网站和应用程序的数据安全。

    https参数

    1. ssl on | off;  
    2. #为指定的虚拟主机配置是否启用ssl功能,此功能在1.15.0废弃,使用listen [ssl]替代
    3. listen 443 ssl;
    4. ssl_certificate /path/to/file;
    5. #指向包含当前虚拟主机和CA的两个证书信息的文件,一般是crt文件
    6. ssl_certificate_key /path/to/file;
    7. #当前虚拟主机使用的私钥文件,一般是key文件
    8. ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
    9. #支持ssl协议版本,早期为ssl现在是TLS,默认为后三个
    10. ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
    11. #配置ssl缓存
    12. off: #关闭缓存
    13. none:  #通知客户端支持ssl session cache,但实际不支持
    14. builtin[:size]:#使用OpenSSL内建缓存,为每worker进程私有
    15. [shared:name:size]:#在各worker之间使用一个共享的缓存,需要定义一个缓存名称和缓存空间大小,一兆可以存储4000个会话信息,多个虚拟主机可以使用相同的缓存名称
    16. ssl_session_timeout time;
    17. #客户端连接可以复用ssl session cache中缓存的有效时长,默认5m

    二.https自签名证书

    1.修改配置文件

    1. [root@localhost ~]# cd /etc/pki/tls/
    2. [root@localhost tls]# ls
    3. cert.pem certs misc openssl.cnf private
    4. [root@localhost tls]# cd certs/
    5. [root@localhost certs]# pwd
    6. /etc/pki/tls/certs
    7. [root@localhost certs]# ls
    8. ca-bundle.crt ca-bundle.trust.crt make-dummy-cert Makefile renew-dummy-cert
    9. [root@localhost certs]# vim Makefile
    10. #找到第57/usr/bin/openssl genrsa -aes128 $(KEYLEN) > $@
    11. 将这一行复制粘贴到下一行,复制的内容删除掉 -aes128 密码
    12. 57行注释掉

    2.使用make编译生成证书

    3.将秘钥和证书复制到/opt下

    1. [root@localhost certs]# cp www.* /opt/
    2. [root@localhost certs]# cd /opt
    3. [root@localhost opt]# ls
    4. nginx-1.18.0 nginx-1.18.0.tar.gz rh www.zxy.com.crt www.zxy.com.key

    4.编辑子配置文件

    5.重新启动nginx

    真机访问https://192.168.240.12

    三.防盗链

    防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗链,referer就是之前的那个网站域名

    1. none:#请求报文首部没有referer首部,比如用户直接在浏览器输入域名访问web网站,就没有referer信息
    2. blocked:#请求报文有referer首部,但无有效值,比如为空
    3. server_names:#referer首部中包含本主机名及即nginx 监听的server_name
    4. arbitrary_string:#自定义指定字符串,但可使用*作通配符。
    5. 示例: *.kgc.org www.kgc.* www.baidu.com
    6. egular expression#被指定的正则表达式模式匹配到的字符串,要使用~开头
    7. 例如:~.*\.kgc\.com

    实现防盗链:

    1.客户机切换到主站点下,编辑配置文件并重启nginx服务

    yum安装主站点地址:cd  /usr/share/nginx/html

    1. [root@localhost ~]# cd /usr/share/nginx/html/
    2. [root@localhost html]# ls
    3. 404.html 50x.html en-US icons img index.html nginx-logo.png pc.conf poweredby.png
    4. [root@localhost html]# vim index.html
    5. <html>
    6. <body>
    7. <h1>this is zhumulangmafeng </h1>
    8. <img src="http://www.zmlmf.com/b.jpg"/>
    9. </body>
    10. </html>
    11. [root@localhost html]# systemctl restart nginx

    2.服务器上切换到子配置文件目录,编辑子配置文件,并重启nginx服务

    1. [root@localhost conf.d]# cd /apps/nginx/conf.d/
    2. [root@localhost conf.d]#
    3. [root@localhost conf.d]# cd /apps/nginx/conf.d/
    4. [root@localhost conf.d]# vim zmlmf.conf
    5. server {
    6. listen 80;
    7. server_name www.zmlmf.com;
    8. root /data/nginx/zmlmf;
    9. }

    3.切换到子配置文件中的站点,拖入图片并改名为b.jpg

    1. [root@localhost conf.d]# cd /data/nginx/zmlmf
    2. [root@localhost zmlmf]# ls
    3. b.jpg

    4.验证真机是否能够通过客户机查看到图片b.jpg

    访问192.168.240.11

    5.设置防盗链

    1. server {
    2. listen 80;
    3. server_name www.zmlmf.com;
    4. root /data/nginx/zmlmf;
    5. location ~* \.(jpg|gif|swf|jpeg|bmp)$ {
    6. valid_referers none blocked *.zmlmf.com zmlmf.com;
    7. if ( $invalid_referer ) {
    8. #rewrite ^/ http://192.168.240.12/error.png;
    9. return 403;
    10. }
    11. }
    12. }

    6.重启nginx服务后,真机再次访问192.16.240.11,出现403报错

    7.给防盗链添加访问失败图片

    开启子配置文件中  #rewrite  ^/ http://192.168.240.12/error.png;

    关闭  #return  403

    在服务器主站点拖入图片并改名为error.png

    重新启动nginx服务

    8.真机访问192.168.240.11

  • 相关阅读:
    Vagrant安装Oracle数据库错误的解决
    GaussDB数据库SQL系列-游标管理
    基于罪名法务智能知识图谱(含码源):基于280万罪名预测、20W法务问答与法律资讯问答功能
    【前端验证】fork-join_none线程立即执行的一次代码优化记录
    使用 ThreadPoolExecutor 管理线程池
    服务器部署 CentOS、VeraCrypt、Docker、主从MySQL、Redis、备份等
    【k8s】【docker】web项目的部署
    人工智能在电子商务中的突破性优势
    vue3 - Vue 项目处理GitHub Pages 部署后 _plugin-vue_export-helper.js 404
    Zookeeper系列——6Zookeeper的分布式锁及Leader选举原理分析
  • 原文地址:https://blog.csdn.net/weixin_56770318/article/details/139474879