Nginx 配置 HTTPS 证书

举报
微枫 发表于 2022/07/19 12:03:31 2022/07/19
【摘要】 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;
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。