zoukankan      html  css  js  c++  java
  • Nginx配置SSL证书实现https访问及端口映射

    http 和 https 介绍

    http:应用最广泛的一种网络协议,是一个B/S的request和response的标准,用于从www服务器传输超文本到本地浏览器的传输协议。

    https:以安全为目标的http通道,即http下加入ssl层,https的安全基础是ssl,因此加密的详细内容就需要ssl。

    两者区别

    安全:http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

    端口:http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

    状态:http的连接很简单,是无状态的;https协议是由ssl和http协议构建的可进行加密传输、身份认证的网络协议,更加安全。

    1、依赖

    实现https访问,必须要安装http_ssl_module模块,可以通过./nginx -V命令查看

     如果configure arguments参数里没有--with-http_ssl_module,你就要重新安装nginx了。如何安装nginx可以参考:Linux环境Nginx安装

    这里简单说一下:

    进入nginx源码目录/usr/local/soft/nginx-1.16.1,执行下面命令:

    [root@test1 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --with-http_ssl_module
    [root@test1 nginx-1.16.1]#make
    [root@test1 nginx-1.16.1]#make install

    安装不会覆盖原来的nginx.conf文件,请放心。

    2、openssl生成证书

    在nginx安装目录/usr/local/nginx创建一个ssl文件加

    进入ssl目录下执行创建证书命令

    openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/nginx/ssl/nginx.key -out /usr/local/nginx/ssl/nginx.crt

    如果你的系统没有openssl也需要安装,我在Linux环境Nginx安装讲这篇博客的时候已经安装过了。

    会在ssl生产两个证书,nginx.crt就是公钥,nginx.key就是私钥

    3、修改Nginx配置

    修改前,我们在105上启动一个端口为8080的tomcat,访问地址:http://172.16.43.105:8080/,内容就是tomcat主页。

    修改Nginx.conf文件,配置https访问,大致意思就是我们把通过http://ip:8000端口访问的请求通过rewrite命令重写为https地址,重写URL后,请求会被打到监听端口为443Server配置上。然后找到我们真正的Tomcat服务器ttp://172.16.43.105:8080。

    跳转流程:请求-->8000 -->443 -->8080

        server {
            listen       8000;
            server_name  172.16.43.103;
            #rewrite ^(.*)$ https://$host$1 permanent;
            rewrite ^ https://$server_name$request_uri? permanent;
        }
    
    
        # HTTPS server
        #
        server {
            listen       443 ssl;
            server_name  172.16.43.103;
    
            ssl_certificate      /usr/local/nginx/ssl/nginx.crt;
            ssl_certificate_key  /usr/local/nginx/ssl/nginx.key;
    
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
            ssl_ciphers  HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers  on;
    
            location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-Ip $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass http://172.16.43.105:8080;
            }
        }

    修改完配置后,reload一下。

    [root@test1 sbin]# ./nginx -s reload

    访问http协议:http://172.16.43.103:8000/,观察地址栏变化,nginx已经把http协议转成https协议了。

    结束

  • 相关阅读:
    pandas_处理异常值缺失值重复值数据差分
    【C语言】输入10个人的成绩,求平均值
    【Markdown】新手快速入门基础教程
    【Python】 平方根
    【Python】 数字求和
    【Python】文件下载小助手
    【Python爬虫程序】抓取MM131美女图片,并将这些图片下载到本地指定文件夹。
    【Python】爬虫原理
    C语言最重要的知识点(电子文档)
    【Python】一些函数
  • 原文地址:https://www.cnblogs.com/shileibrave/p/14582263.html
Copyright © 2011-2022 走看看