• Nginx 配置 HTTPS 过程(+反向代理)


    nginx配置HTTPS前置条件

    1. 1、服务器上已经安装nginx,已经配置http访问
    2. 2、nginx服务器已经安装ssl模块
    3. 3、已经拥有ssl证书,这需要你有一个域名,并且申请了证书(免费的)
    4. 4、前端访问配置了https,则服务API也是https,所以后端也要配置https。

    我这里参考了一个网友的文章,有兴趣可以直达:手把手教你Nginx 配置 HTTPS 完整过程_somnus_小凯的博客-CSDN博客_nginx配置https 。

    不建议只一端配置https,另一端不配置,因为浏览器会拦截并给你一个白眼:mixed-content。大意是要你: 前端https页面中不能请求 http的请求。必须将http 转为https的请求。即 nginx 配置反向代理也必须是https的。

    后端的https 配置我将在后面的文章中呈现,可"搜索"本站 https。

    这里略去前奏,直接上。

    主要分为几步:

    1、配置https server。

    2、配置http重定向。

    3、重启nginx,查看端口情况,访问页面。

    1、配置https server。

    1. server {
    2. listen 443 ssl; # 443端口
    3. server_name www.wffw88.top; # 你的域名
    4. # 你的域名下申请的证书
    5. ssl_certificate ../cert/www.wffw88.top_bundle.crt;
    6. ssl_certificate_key ../cert/www.wffw88.top.key;
    7. # 默认按此配置
    8. ssl_session_cache shared:SSL:1m;
    9. ssl_session_timeout 5m;
    10. # 默认按此配置
    11. ssl_protocols TLSv1.2 TLSv1.3;
    12. # 默认按此配置,配置加密套件,写法遵循 openssl 标准。
    13. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    14. ssl_prefer_server_ciphers on;
    15. # 这里是请求后台的API,我这里以 /koa 开头
    16. location ^~ /koa {
    17. # 反向代理 服务
    18. proxy_pass https://wffwkoa;
    19. }
    20. location / {
    21. root html; # 这里是静态文件目录
    22. index index.html index.htm; # 这里是入口文件名称
    23. # 这里是 vue-router histoey 模式的默认添加
    24. try_files $uri $uri/ /index.html;
    25. }
    26. # error config
    27. error_page 500 502 503 504 /50x.html;
    28. location = /50x.html {
    29. root html;
    30. }
    31. }

    如果你暂时还不能配置后端的https,则可以在nginx https server 的 localtion /api{……}中添加请求头: add_header Content-Security-Policy upgrade-insecure-requests; 不过我试了一下,chrome 浏览器还是报错,没法访问。

    上面提到的 proxy_pass https://wffwkoa; 对应的是服务器地址,我这里前端后端都配置在一个服务器上,所以使用 回环地址,我的后端服务https监听的是444端口,所以这里配置如下:

    1. upstream wffwkoa {
    2. server 127.0.0.1:444;
    3. }

    2、配置http重定向。

    我们需要将http的请求代理到https上,也就是永久重定向 301。我在网上查到两种跳转方式,英雄美女请自选。

    1. server {
    2. listen 80;
    3. server_name www.wffw88.top;
    4. # 转到 https
    5. # rewrite ^(.*)$ https://$host$1 permanent;
    6. return 301 https://$host$request_uri;
    7. }

    3、重启nginx,查看端口情况,访问页面。

    配置好了,可以重启一下了

    /usr/local/nginx/sbin/nginx -s reload
    

    查看端口:

     

  • 相关阅读:
    @Valid和@Validated在service层的分组校验
    微信小程序的缓存、跳转与请求
    可能是绝唱,阿里资深工程师深度解读Netty底层核心源码 学到就是赚到
    iOS安全加固方法及实现
    深入理解JVM类加载机制与双亲委派模型
    敏捷管理工具和scrum敏捷管理方法介绍
    Pandas:如何让你的代码性能飙升
    LRU缓存
    Kotlin 数据类型详解:数字、字符、布尔值与类型转换指南
    【uiautomation】微信群发消息,获取全部聊天记录
  • 原文地址:https://blog.csdn.net/weixin_70437515/article/details/125370461