• 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协议了。

    结束

  • 相关阅读:
    Java实现 LeetCode 413 等差数列划分
    Java实现 LeetCode 413 等差数列划分
    Java实现 LeetCode 412 Fizz Buzz
    简单字符设备驱动程序
    fork与vfork的区别
    进程创建函数fork()、vfork() ,以及excel()函数
    区分execl与system——应用程序中执行命令
    CMOS Sensor的调试经验分享
    嵌入式ARM-Linux开发工具下载地址合集
    嵌入式 linux 查看内存
  • 原文地址:https://www.cnblogs.com/shileibrave/p/14582263.html
Copyright © 2020-2023  润新知