示例为 Nginx 配置,其他 web 服务器原理相同

当使用 http(s) 协议时,如何让 http 协议强制跳转到 https 呢?

由于飞鸽采用端口转发模式,即80 -> 80,443 -> 443,如果穿透了 https 端口,当我们使用 http:// 访问时,会报 400

状态码:497 HTTP Request Sent to HTTPS Port 发送到HTTPS端口请求

奇技淫巧

既然 https 协议下无法使用 http 请求,那可以在 nginx 中将 497错误码直接转发到 https请求上

server {
        listen 443 ssl;
        server_name www.xxx.com;
        error_page  497 https://$http_host$request_uri;  # 重点在这里,只需要一行命令

        ssl_certificate /usr/local/nginx/cert/7172296_www.xxx.com.pem;
        ssl_certificate_key /usr/local/nginx/cert/7172296_www.xxxx.com.key; 
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

         location / {
            root   html;
            index  index.html index.htm;
        }

        error_page 500 502 503 504 /50x.html;
    }

results matching ""

    No results matching ""