首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux上nginx配置SSL协议非80、443端口自动跳往https端口

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

作者头像
全栈程序员站长
发布2022-06-25 16:07:30
发布2022-06-25 16:07:30
14.3K0
举报

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

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

但是这种配置需要用户自动输入http还是https,这时我只需要添加一个配置就可以实现80端口自动跳转到443端口。

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

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

代码语言:javascript
复制
    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端口。

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

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

代码语言:javascript
复制
    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.cn/151179.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档