Nginx实现本地http转https请求

这篇具有很好参考价值的文章主要介绍了Nginx实现本地http转https请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

一、安装nginx

二、安装OpenSSL

         1、下载OpenSSL:

         2、配置环境变量:

                  2.1:配置环境变量,OpenSSL_HOME 

                  2.2:配置path

 三、生成https证书

         1、创建ssl文件夹用于存放证书。创建私钥 (建议使用系统窗口,不要用gitBash 有涉及到选择的地方,gitBash无法选择)

         2、文件夹中生成shidian.key文件 创建csr证书。

         3、复制 shidian.key 并重命名 shidian.key.org 执行命令

         4、生成crt证书

 四、修改nginx.conf配置,使用https请求

 五、关于对https请求的理解

         1、为什么要用https?

         2、http存在的问题

         3、什么是https?

                  1、https定义:

                  2、SSL证书:

                  3、SSL发展史: 

         4、浏览器在使用HTTPS传输数据的流程是什么?

         5、HTTPS的缺点

         6、HTTP与HTTPS的对比


前言:

项目中有需要做接口回调,测试和dev环境都是https方式请求调用没有问题,但是本地调试不通。因为本地启动后端服务都是http请求,所以使用nginx代理,将http请求转换为https请求,方便调试。

一、安装nginx

Nginx官网:nginx: download

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

安装到非中文目录下:

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

 启动Nginx:点击nginx.exe文件,启动nginx

然后访问:

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维访问成功,说明安装nginx成功

二、安装OpenSSL

OpenSSL官网:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

         1、下载OpenSSL:

 放到一个非中文的目录下去:

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

         2、配置环境变量:

                  2.1:配置环境变量,OpenSSL_HOME 

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

                  2.2:配置path

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

 三、生成https证书

首先在Nginx得文件夹中新建一个ssl文件夹:

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

         1、创建ssl文件夹用于存放证书。创建私钥 (建议使用系统窗口,不要用gitBash 有涉及到选择的地方,gitBash无法选择)

openssl genrsa -des3 -out shidian.key 1024            //shidian 自己取的名字

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

可以输入pass作为初始的密码,两次一致。

         2、文件夹中生成shidian.key文件 创建csr证书。

openssl req -new -key shidian.key -out shidian.csr

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

 此时应该有两个文件:

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

         3、复制 shidian.key 并重命名 shidian.key.org 执行命令

openssl rsa -in shidian.key.org -out shidian.key

         4、生成crt证书

openssl x509 -req -days 365 -in shidian.csr -signkey shidian.key -out shidian.crt

最终的文件夹里的内容为:

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

 四、修改nginx.conf配置,使用https请求

整个nginx.conf文件配置:


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;


     server {
       listen       80;
       server_name  localhost;

       #charset koi8-r;

       #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
       }

       #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  localhost;

        # ssl_certificate      cert.pem;
        # ssl_certificate_key  cert.key;
    ssl_certificate      ..//ssl//shidian.crt;
        ssl_certificate_key  ..//ssl//shidian.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;
        }
    }
}

 

 关于ssl配置

    server {
        listen       443 ssl;
        server_name  localhost;

        # ssl_certificate      cert.pem;
        # ssl_certificate_key  cert.key;
        ssl_certificate      ..//ssl//shidian.crt;     指的是ssl证书
        ssl_certificate_key  ..//ssl//shidian.key; 指的是ssl的密钥

        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;
        }
    }

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

进行https请求访问:

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

给nginx配置https请求成功!

 五、关于对https请求的理解

         1、为什么要用https?

之前我们大部分的请求都是用的http的请求,现在为什么突然要用到https请求?

实际使用中,绝大多数的网站现在都采用的是https协议,这也是未来互联网发展的趋势。

在wireshark抓取的一个博客网站的登录请求过程中,访问的账号密码都是明文传输, 这样客户端发出的请求很容易被不法分子截取利用,因此,HTTP协议不适合传输一些敏感信息,比如:各种账号、密码等信息,使用http协议传输隐私信息非常不安全。

         2、http存在的问题

  • 请求信息明文传输,容易被窃听截取。
  • 数据的完整性未校验,容易被篡改
  • 没有验证对方身份,存在冒充危险

         3、什么是https?

                  1、https定义:

HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

那么问题来了,什么是SSL证书?

                  2、SSL证书:

1、SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

2、TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。

                  3、SSL发展史: 

  1. 1994年NetSpace公司设计SSL协议(Secure Sockets Layout)1.0版本,但未发布。
  2. 1995年NetSpace发布SSL/2.0版本,很快发现有严重漏洞
  3. 1996年发布SSL/3.0版本,得到大规模应用
  4. 1999年,发布了SSL升级版TLS/1.0版本,目前应用最广泛的版本
  5. 2006年和2008年,发布了TLS/1.1版本和TLS/1.2版本

         4、浏览器在使用HTTPS传输数据的流程是什么?

Nginx实现本地http转https请求,拓展与总结(项目总结),nginx,服务器,运维

  1. 首先客户端通过URL访问服务器建立SSL连接。
  2. 服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。
  3. 客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
  4. 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
  5. 服务器利用自己的私钥解密出会话密钥。
  6. 服务器利用会话密钥加密与客户端之间的通信

         5、HTTPS的缺点

  • HTTPS协议多次握手,导致页面的加载时间延长近50%;
  • HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;
  • 申请SSL证书需要钱,功能越强大的证书费用越高。
  • SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大。

         6、HTTP与HTTPS的对比

  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
  • http和https使用连接方式不同,默认端口也不一样,http是80,https是443。

今天的分享就到这了,希望能够帮助到你!文章来源地址https://www.toymoban.com/news/detail-808135.html

到了这里,关于Nginx实现本地http转https请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx接收Http协议请求转发使用Https协议

    公司使用阿里的apigateway,规定不太友好,同是SIT环境,A系统的SIT1环境居然不能调用B系统的SIT2环境的接口。因为各个系统之间部署的SIT环境数量不同A系统可能只有1套,B系统可能有8套,这样的话,可能会随时切换调用B系统的环境,管理员不允许,于是想着用Nginx做下转发。

    2024年02月08日
    浏览(63)
  • tengine/nginx https请求 转发 http upstream

    当前的互联网应用基本都要支持https协议,而当浏览器头通过https协议将请求发到到负责负载的nginx后,会由当前nginx再以http协议向后端upstream进行请求,之所以这么做是因为https协议的安全性也带来的额外的性能消耗。而源端基本都是在一个内网里面的,对于通讯协议的安全性

    2024年01月23日
    浏览(43)
  • 通过nginx将https协议反向代理到http协议请求上

    目前一个系统仅支持https协议访问,因后端服务基于ssl协议,前端在请求是也需要支持ssl协议的https请求来访问。目前的代理服务器是nginx,现在想要 通过http访问系统 ,需通过nginx的 反向代理 或者 重定向方式 将https请求代理为http请求。可实现的做法有如下几种: 1、使后端

    2024年02月08日
    浏览(42)
  • nginx负载转发源请求http/https:X-Forwarded-Proto及nginx中的转发报头

    今天在排查服务器的问题时最后定位到服务器因为经过了运维这一层的处理,转发过来的请求不管用户请求的是https还是http,我们的proxy服务器收到的都是80端口上的http。于是联系相关部门了解有没有现成的可用的这样一个字段来获得这个值。公司用的也是标准报头,即X-Fo

    2024年02月16日
    浏览(56)
  • Nginx配置springboot+vue项目http跳转https

    java生成证书 添加依赖 复制keystore到springboot资源目录,修改application.yml配置  启动项目 nginx配置 开启ssl     重启nginx -s reload 访问localhost:81将跳转到https://localhost/login?redirect=/index  

    2024年02月12日
    浏览(49)
  • nginx支持一个端口访问多个前端项目(http以及https)

        最近做项目结构优化,前端项目都是部署在nginx上,想实现同一个端口可以访问多个前端项目.这样可以提高服务器的端口复用率,降低项目部署以及维护成本.根据平常的需求,用两台nginx服务器分别支持http、https同一端口访问不同项目。下面将配置方式以及相关注意事项做简

    2024年02月03日
    浏览(53)
  • nginx配置若依框架vue打包项目(同时支持http和https)

    该配置模版主要是若依框架前后端配置,若只是配置普通的vue项目,直接复制一下小模块即可   #vue页面访问配置      location  / {              root /www/wwwroot/www.xxx.com;             # autoindex on;              try_files $uri $uri/ /index.html;              index  index.html index.htm

    2024年01月25日
    浏览(50)
  • nginx实现https与http共存方案

    在日常开发中,到正式上线的时候大部分需要使用https来保证链路传输的安全性,这块相信大家都了解了,但有些特殊场景下可能需要http和https共存,并且端口都是同一个端口,只是协议不同,那这块我们就借助nginx来配置了。 通过configure安装共存需要的模块stream、with-strea

    2024年02月10日
    浏览(39)
  • SpringBoot+Vue前后端分离项目+云服务器(nginx配置http/https)

    目录 1.Java项目打包 2.前端项目打包 ok,项目准备好了,接下来就是服务器方面的操作了 3.服务器 1.点击控制台 2.找到 ECS云服务器 3.概览-我的资源  4.重置服务器密码  5.配置安全组 4.域名 1.买域名 2.备案  3.解析至服务器 31.控制台找到  3.2.域名列表 ,找到需要的域名,点击解析​

    2024年02月09日
    浏览(55)
  • 【小沐学C++】libcurl实现HTTP/HTTPS请求

    https://github.com/curl/curl https://curl.se/libcurl/ https://curl.se/download.html libcurl 是一个免费且易于使用的客户端 URL 传输 库,支持DICT,FILE,FTP,FTPS,GOPHER,GOPHERS,HTTP,HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POPP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB、SMBS、SMTP、SMTPS、TELNET 和 T

    2024年02月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包