首頁  >  問答  >  主體

Nginx Http 重新導向至 Https

全站都使用Https,只開放443埠。但這樣用http請求時會無法訪問,必須手動加上https的協議頭。

有什麼辦法能將80埠的http請求重定向到443從而使用https嗎?

天蓬老师天蓬老师2713 天前639

全部回覆(3)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-16 17:16:12

    如果沒有nginx的話裝一個,如果要啟用http2,那麼版本要在1.90以上,然後先配置443端口,最後把http 80端口請求轉發到443。完整的配置參考下面,我部落格的配置:

    #设置非安全连接永久跳转到安全连接
    server{
        listen 80;
        server_name m2mbob.cn;
        #告诉浏览器有效期内只准用 https 访问
        add_header Strict-Transport-Security max-age=15768000;
        #永久重定向到 https 站点
        return 301 https://$server_name$request_uri;
    }
    
    server {
        #启用 https, 使用 http/2 协议, nginx 1.9.11 启用 http/2 会有bug, 已在 1.9.12 版本中修复.
        listen 443 ssl http2 fastopen=3 reuseport;
        server_name m2mbob.cn www.m2mbob.cn;
        #告诉浏览器不要猜测mime类型
        add_header X-Content-Type-Options nosniff;
    
        ssl on;
        #证书路径
        ssl_certificate 证书路径;
        #私钥路径
        ssl_certificate_key 私钥路径;
        #安全链接可选的加密协议
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        #可选的加密算法,顺序很重要,越靠前的优先级越高.
        ssl_ciphers 'CHACHA20:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4;';
        #在 SSLv3 或 TLSv1 握手过程一般使用客户端的首选算法,如果启用下面的配置,则会使用服务器端的首选算法.
        ssl_prefer_server_ciphers on;
        #储存SSL会话的缓存类型和大小
        ssl_session_cache shared:SSL:10m;
        #缓存有效期
        ssl_session_timeout 60m;
    
        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   Host      $http_host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass         http://127.0.0.1:2368;
        }
    }

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 17:16:12

    第一個方案>

        配置2个监听文件,一个80端口负责http,一个443端口负责https

    第二個方案>

    server {
                listen 80 default;
                listen 443 ssl;
                server_name test.com;
                root /var/www/html;
                ssl_certificate /usr/local/Tengine/sslcrt/test.com.crt;
                ssl_certificate_key /usr/local/Tengine/sslcrt/test.com.key;
            }

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 17:16:12

    寫兩個配置

    其中80埠的直接跳到 443

    server {
    listen 80;
    server_name 你的網域;
    rewrite ^(.*)$ https://$host$1 permanent;
    }

    回覆
    0
  • 取消回覆