Ubuntu使用Nginx反向代理配置https

642 阅读2分钟

前言

为了在你的前后端分离的Web项目上配置HTTPS,你需要在你的Ubuntu服务器上安装并配置一个反向代理服务器,通常使用Nginx或Apache,来处理HTTPS连接,并将请求转发到你的前端和后端应用。

这是ChatGPT告诉我的 最近在开发一个前后端分离项目 前端使用的vite 所以理所当然的搜索vite配置https 查了一圈没个正经 索性还是问问AI吧 这一问 才发现我陷入了思维误区了

所以这里记录一下

安装Nginx

sudo apt install nginx

ssl证书

因为我域名是在阿里买的 所以域名可以申请一个免费的ssl证书 这个证书CA是认的

也可以自己生成自签名的证书 不过自签名的证书CA不认 所以浏览器会提示不安全

有钱的大佬也可以直接买 这里不再赘述

不管买还是生成 最终得到的证书是 .crt后缀的证书 和 .key后缀的密钥

配置

创建配置文件

进入 /etc/nginx/sites-available 路径

可以看到有个 default 的配置文件 这是默认的配置文件 我们不管它

然后 touch redcraft 这里我创建了一个叫redcraft的配置文件

使用 vim redcraft 打开就可以编辑了

配置解析

这里我以我的域名和证书为例子

域名是 redcraft.cn

证书名称是 redcraft.cn.pem 和 redcraft.cn.key

证书存放在 /home/ubuntu/redmc/ssl 路径下

前端项目采用442端口 后端使用8888端口

并且将http 重定向到了 https

server {
    listen 80;
    server_name redcraft.cn www.redcraft.cn;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name redcraft.cn www.redcraft.cn;

    ssl_certificate /home/ubuntu/redmc/ssl/redcraft.cn.pem;
    ssl_certificate_key /home/ubuntu/redmc/ssl/redcraft.cn.key;

    location / {
        proxy_pass http://localhost:442; # 前端应用监听的端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /api {
        proxy_pass http://localhost:8888; # 后端应用监听的端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

启用

# 启用你的配置
sudo ln -s /etc/nginx/sites-available/redcraft /etc/nginx/sites-enabled/
# 检查配置文件是否正确
sudo nginx -t  
# 重启 nginx 服务
sudo systemctl restart nginx