Nginx 配置 HTTPS 证书

HTTPHTTPS的区别

HTTP是超文本传输协议,信息是明文传输, HTTPS则具安全性的SSL/TLS加密传输协议。

HTTPHTTPS使用完全不同的连接方法和不同的端口。前者是80,后者是443HTTP连接是非常简单和无状态的;https协议是由SSL/TLS+HTTP协议构建的网络协议,可用于加密传输和身份认证。它比HTTP协议更安全。

超文本传输协议,缩写为HTTP,是分布式、协作式和超媒体信息系统的应用层协议,是万维网数据通信的基础,也是互联网上使用最广泛的网络传输协议。HTTP最初被设计为提供一种发布和接收HTML页面的方式。

HTTPS协议之所以安全,是因为HTTPS协议对传输的数据进行加密,而加密过程是由非对称加密实现的。然而,HTTPS在内容传输的加密过程中使用对称加密,而非对称加密只在证书验证阶段发挥作用。

标准端口配置HTTPS证书

server {
    #监听443端口
    listen 443 ssl;
    #你的域名
    server_name myapp.com; 

    #ssl证书的 crt 或 pem 文件路径
    ssl_certificate  /root/card/myapp.com.crt(myapp.com.pem);
    #ssl证书的 key 文件路径
    ssl_certificate_key /root/card/myapp.com.key;
    location / {
        # 服务地址
        proxy_pass  http://ip:port;
    }
}
server {
    listen 80;
    server_name myapp.com;
    #将请求转成https
    rewrite ^(.*)$ https://$host$1 permanent;
}

HTTP的默认端口是80,HTTPS的默认端口是443

非标准端口配置 HTTPS证书

server {
    #监听8899端口
    listen 8899 ssl;
    #你的域名
    server_name myapp.com; 

    #ssl证书的 crt 或 pem 文件路径
    ssl_certificate  /root/card/myapp.com.crt(myapp.com.pem);
    #ssl证书的 key 文件路径
    ssl_certificate_key /root/card/myapp.com.key;
    # 拦截跳转 HTTPS
    error_page 497 https://$host:$server_port$uri$is_args$args;
    
    location / {
        # 服务地址
        proxy_pass  http://ip:port;
    }
}

重定向后,没有带上正确的端口号,需要显式的加上端口号 $server_port

497状态码

使用 HTTP方式请求网站时,报如下错误:

400 Bad Request: The plain HTTP request was sent to HTTPS port

可以通用error_page去拦截跳转HTTPS。 配置代码:

error_page 497 https://$host:$server_port$uri$is_args$args;

或者

error_page 497 https://$host:$server_port$request_uri;

猜你喜欢

转载自blog.csdn.net/qq_41779565/article/details/124076537