Linux上nginx配置SSL协议非80、443端口自动跳往https端口

Linux上nginx配置SSL协议非80、443端口自动跳往https端口在生产环境中往往碰到一个网站需要多个访问端口,而默认的http访问端口是80,https访问的端口是443,然而这是不够在生产环境下使用的,这个时候就需要配置更多的端口来弥补这一缺点。默认情况下用户输入URL时是约简单越好,比如http://baidu.com,用户只需要输入baidu.com就可以访问。但是这样是通过http协议进行访问,而并非https进行访问。站在用户的角度来考虑问题他不…

大家好,又见面了,我是你们的朋友全栈君。

在生产环境中往往碰到一个网站需要多个访问端口,而默认的http访问端口是80,https访问的端口是443,然而这是不够在生产环境下使用的,这个时候就需要配置更多的端口来弥补这一缺点。
默认情况下用户输入URL时是约简单越好,比如http://baidu.com ,用户只需要输入baidu.com就可以访问。但是这样是通过http协议进行访问,而并非https进行访问。站在用户的角度来考虑问题他不会管你的网站是通过什么来访问的,他只管我的一些信息不被别人劫持到,这就要使用到https加密来进行访问。
比如我的nginx已经配置好了配置文件,如下图。
nginx配置
但是这种配置需要用户自动输入http还是https,这时我只需要添加一个配置就可以实现80端口自动跳转到443端口。

   #  80端口自动转发到443端口
    server {
        listen        80;
       server_name   ********.com;
       rewrite ^(.*)$ https://${server_name}$1 permanent;
    }
    server {
        listen    80;
        listen    443 ssl;
……
   }

但是这样会牵扯到配置的其他非80端口,所以上面的配置在生产环境是行不通的
这些还是默认的端口,但如果要是其他端口呢?
比如:

    server {
        listen        9116 ssl;
        server_name   *********.com;

        ssl_certificate  /data/nginx/cert/214376322580000.pem;
        ssl_certificate_key /data/nginx/cert/214376322580000.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
        ssl_prefer_server_ciphers on;

        charset UTF8;
        access_log  logs/******.access.log  main;
        error_log   logs/*****.error.log;

        location / {
               proxy_pass https://***;
               }
               }

重新检查nginx配置没有任何的报错。用浏览器访问时就会出来一个报错“The plain HTTP request was sent to HTTPS port”。
那么这时我就需要对配置文件进行更改。
首先注释掉80端口自动转发到443端口。

    # 80端口自动转发到443端口
    #server {
    #    listen        80;
    #   server_name   ******.com;
    #   rewrite ^(.*)$ https://${server_name}$1 permanent;
    #}

然后在server配置里面添加一句**‘error_page 497 301 https://$http_host$request_uri;’ **

    server {
        listen        9116 ssl;
        server_name   ******.com;
        
        ssl_certificate  /data/nginx/cert/214376322580000.pem;
        ssl_certificate_key /data/nginx/cert/214376322580000.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
        ssl_prefer_server_ciphers on;
        error_page 497 301 https://$http_host$request_uri;
        
        charset UTF8;
        access_log  logs/******.access.log  main;
        error_log   logs/********.error.log;
        
        location / {
               proxy_pass https://****;
            }
        }

这样就可以实现http自动跳转到https了。

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151179.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux之shell编程:if语法「建议收藏」

    Linux之shell编程:if语法「建议收藏」1、if的基本格式if[参数];then符合该条件执行的语句elif[参数];then符合该条件执行的语句else符合该条件执行的语句fi2、参数内容单文件判断????????????[-afile]如果file存在则为真[-bfile]如果file存在且是一个块特殊文件则为真[-cfile]如果file存在且是一个字特殊文件则为真[-dfile]如…

    2022年8月18日
    5
  • iOS安全攻防(三):使用Reveal分析他人app

    iOS安全攻防(三):使用Reveal分析他人app

    2021年12月7日
    32
  • C语言中函数的基本知识

    C语言中函数的基本知识接着上次的数组,这次我们来简单的讲讲C语言里面的函数。函数和指针这两大块,在C语言中占据着重要的位置,是C语言中的主体和核心,所以它们的重要性也就不言而喻了。那什么是函数呢?1:函数是C语言的模块,一块块的,有较强的独立性,可以相互调用,也就是说,你可以在函数A中调用函数B,又可在函数B中调用函数C,不仅如此,你还可以调用函数自身(递归)。2:函数是完成一个个特定任务的语句集合,它能完…

    2022年6月26日
    26
  • 调查发现女人比男人更喜欢使用社交网站(组图)

    调查发现女人比男人更喜欢使用社交网站(组图)男人更喜欢语音/电话交流女人比男人更喜欢使用社交网站  北京时间9月25日上午消息,根据市场研究机构Rebtel发布的最新调查结果,女人更喜欢通过社交网站与家人、朋友及同事联系,而男人更喜欢用电话与家人、朋友及同事联系。  Rebtel在今年5月17日至19日对美国2361名18岁以上成年人进行了这项调查,旨在揭示一个问题,即一旦美国成年人只能使用一种通讯…

    2022年7月25日
    8
  • 掩膜 图像处理_掩膜处理

    掩膜 图像处理_掩膜处理刚开始涉及到图像处理的时候,在opencv等库中总会看到mask这么一个参数,非常的不理解,在查询一系列资料之后,写下它们,以供翻阅。数字图像处理中的掩膜的概念是借鉴于PCB制版的过程,在半导体制造中,许多芯片工艺步骤采用光刻技术,用于这些步骤的图形“底片”称为掩膜(也称作“掩模”)

    2025年7月26日
    0
  • spring容器创建对象的时间和懒加载

    spring容器创建对象的时间和懒加载

    2021年7月19日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号