将 nginx 从 http 转换为 https

将 nginx 从 http 转换为 https

我在 aws lighsail 服务器上托管一个网站。它是单服务器,我在其上运行 4 个 docker 容器。1-nginx、2-node js、3- spring bot、4 - mysql。

目前,我的网站加载速度很快:

    server {
    listen       80;
    server_name  *.example.com;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    client_max_body_size 100M;
    location / {
        proxy_pass http://cahub-client:4000;
    }

    location /api {
        rewrite /api/(.*) /$1  break;
        proxy_pass http://microservice:8080;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

我已经从 goddady 购买了 ssl 证书,现在正在安装在我的服务器上。

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
    }

server {
    listen 443 ssl;
    server_name  *.domain.com;
    
    ssl_certificate /etc/nginx/certs/cae51a61335308544.pem;
    ssl_certificate_key /etc/nginx/certs/www.eaxmple.com.key;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    client_max_body_size 200M;
    location / {
        proxy_pass http://cahub-client:4000;
    }

    location /api {
        rewrite /api/(.*) /$1  break;
        proxy_pass http://microservice:8080;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

那么现在发生了什么。当我在 url 中输入我的域名时,它会重定向到 https,但只有 angular 客户端位置块在运行,这是我的前端。但每当从前端到后端进行调用时。它也应该转到我的反向代理块 /api。这不是 reolvong,而是出现错误混合上下文。当我在网络选项卡中看到时。我的前端调用正在进行https://example.com但我的后端调用正在像之前一样进行http://example.com/api/

答案1

您需要修复您的前端应用程序,以便它能够调用后端https://example.com/api而不是http://example.com/api

相关内容