Skip to content

配置SSL证书和反代

一、准备工作

你需要必备的内容是:

  • 服务器的IP地址(本教程将以1.1.1.1举例)
  • 服务器用户名(一般是root)
  • 服务器密码
  • 一个已经托管到cloudflare的域名。

你还需要一个SSH客户端工具,你可以参考 怎么连接你的VPS 这一篇中的 Xterminal 。对于新手、小白更加友 好。

并根据该教程,连接到你的VPS。

说明

教程中会对我的IP地址做脱敏处理,以1.1.1.1替代我的实际IP地址;

本节教程将会举例通过 jiuguan.laopobao.icu,访问 1.1.1.1:8000;

通过panel.laopobao.icu,访问 1.1.1.1:10086 (我自己设置的1panel端口是10086)。

二、安装Nginx

其实1panel自带了反代的工具 OpenResty ,提供可视化的操作界面。但是我觉得不是很好用,部分项目设置回调地址时容易出错。

还是学习一下最强的Nginx吧,一步到位。

安装前先更新系统软件包。

如果需要输入密码,就输入你服务器的登录密码。

bash
sudo apt update
sudo apt upgrade -y

安装 Nginx

bash
sudo apt install nginx -y

启动Nginx服务并设置为开机自启:

bash
sudo systemctl start nginx
sudo systemctl enable nginx

检查一下Nginx服务的状态:

bash
sudo systemctl status nginx

如果看到active (running) 字样,说明Nginx服务已成功启动。

ctrl+c退出查看服务状态。(退出后才能接着执行其他命令)

二、配置域名DNS记录

登录到Cloudflare控制台

https://dash.cloudflare.com/

打开我们托管的域名(我的是laopobao.icu)

alt text

点击页面左侧的 DNS记录

然后在页面中点击添加记录

alt text

在域名管理界面添加A记录。

  • 类型选择 A
  • 名称:jiuguan(这个最终将成为域名的前缀,例如jiuguan.laopobao.icu)
  • IPv4地址:写你实际的服务器IP地址,我图中的1.1.1.1是为了演示写的假IP地址。

alt text

注意

由于我们要通过 jiuguan.laopobao.icu,访问 1.1.1.1:8000(酒馆);

通过 panel.laopobao.icu,访问1.1.1.1:10086,所以我们配置两条域名解析。

(1.1.1.1是为了演示写的假IP)

alt text

三、配置Nginx

1,创建Nginx配置文件:

执行下方命令。

bash
sudo nano /etc/nginx/sites-available/fandai.conf

执行后会打开一个空的窗口。

2,编辑配置文件内容

感谢灵绫零泠玲霊爆炸小羊羔对配置文件的反馈,已更改配置文件内容。其中针对酒馆部分的AI思考时长、关闭缓冲部分参考了灵绫零泠玲霊老师的写法。

我们使用 Nano 编辑器来编辑配置文件内容。

nano编辑器简单用法

  • 通过键盘上的 ↑ ↓ ← → 键来移动光标;
  • 按快捷键ctrl+o(字母o),可以保存文件内容,在窗口底部出现白色底的File Name to Write: xxxxxx时,按回车即可保存;
  • 按快捷键ctrl+x,可以退出nano编辑器。

在这个空的窗口中,我们需要粘贴进去配置文件。

请注意你需要将更改server_name为自己的域名

将proxy_pass终端端口更改为自己需要代理的端口。

(在下方的代码块中会清晰显示的,就是需要你更改的)

ts
# 配置 jiuguan.laopobao.icu 的反向代理(专门针对酒馆等AI应用的优化配置) 
server {
    listen 80;
    server_name jiuguan.laopobao.icu; 

    # 解除上传文件大小限制(0为不限制)
    client_max_body_size 0; 

    location / {
        proxy_pass http://127.0.0.1:8000;  # 反代到8000端口
        
        # 基础请求头透传
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # 支持 WebSocket 实时通信
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 解决AI思考时间过长导致的504超时报错
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;

        # 关闭缓冲,确保AI聊天的“流式输出”效果顺滑输出
        proxy_buffering off;
        proxy_cache off;
    }
}

# 配置 panel.laopobao.icu 的反向代理 (针对普通面板或常规网站的通用配置)
server {
    listen 80;
    server_name panel.laopobao.icu; 

    # 解除上传文件大小限制(0为不限制)
    client_max_body_size 0; 

    location / {
        proxy_pass http://127.0.0.1:10086;  # 反代到10086端口
        
        # 基础请求头透传
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # 支持 WebSocket 实时通信
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

更改完成后,粘贴进打开的nano编辑器中(即/etc/nginx/sites-available/fandai.conf文件)

ctrl+o(字母欧),再按回车保存;

ctrl+x,退出编辑器。

你可以通过下方指令来查看是否配置成功:

cat /etc/nginx/sites-available/fandai.conf

输出配置文件中的内容,就成功啦。

3,启用配置文件

创建软链接将配置文件启用

bash
sudo ln -s /etc/nginx/sites-available/fandai.conf /etc/nginx/sites-enabled/

不会输出任何内容。

检查Nginx配置文件是否有语法错误:

bash

sudo nginx -t

输出内容

输出以下内容就是成功了:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

(看“ok”和“successful”)

4,重新加载Nginx

确认没有语法错误后,重新加载Nginx

bash
sudo systemctl reload nginx

这一步同样不会输出任何内容。

四、使用Certbot获取SSL证书

务必配置证书,这样可以使用https,比http更加安全。

1,添加Certbot的官方软件源:

bash
sudo apt install certbot python3-certbot-nginx -y

2,使用Certbot获取SSL证书

必须替换

你必须替换下方代码中的jiuguan.laopobao.icupanel.laopobao.icu为你自己实际想要获取证书的域名。

bash
sudo certbot --nginx -d jiuguan.laopobao.icu -d panel.laopobao.icu

当提示下方内容时

Enter email address (used for urgent renewal and security notices)

(Enter 'c' to cancel):

输入你的邮箱地址,然后按回车,如图:

alt text

当提示输入 (Y)es/(N)o时,输入y并按回车(不区分大小写)

【一共需要输入两次 y

alt text

稍等一会儿,等待证书申请完成。

当提示:Successfully deployed certificate for jiuguan.laopobao.icu to xxxxxx时,就是成功了。

alt text

3,验证ssl证书

现在,访问你设置好的反代,例如我的 panel.laopobao.icu

alt text

成功的标志

  • 网站能够正常访问
  • 地址栏有锁
  • 网站地址以https开头

五、后续添加新的Nginx反代的方法

1,编辑配置文件

打开配置文件

bash
sudo nano /etc/nginx/sites-available/fandai.conf

💡 不要惊慌:文件内容变多了!

当你再次打开这个文件时,你会发现里面多出了很多原本没有的代码(比如 ssl_certificate 等等)。

不要害怕! 这是因为前面我们使用了 Certbot,它自动帮你把 HTTPS 相关的安全配置写进去了。

你只需要按键盘的 键,一直移动到文件的最最最底部,将新的配置粘贴在所有代码的最后面即可。

千万不要修改或删除上面原本的代码哦!

2,粘贴配置文件

在配置文件的最后,粘贴新的参数:

(以 new.laopobao.icu 为例,端口为8888)

(在下方的代码块中会清晰显示的,就是需要你更改的)

ts
# 配置 new.laopobao.icu 的反向代理 
server {
    listen 80;
    server_name new.laopobao.icu; 

    # 解除上传文件大小限制(0为不限制)
    client_max_body_size 0; 

    location / {
        proxy_pass http://127.0.0.1:8888;  # 反代到8888端口
        
        # 基础请求头透传
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # 支持 WebSocket 实时通信
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

3,检查Nginx语法

bash
sudo nginx -t

输出内容

输出以下内容就是成功了:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

(看“ok”和“successful”)

4,重新加载Nginx

确认没有语法错误后,重新加载Nginx

bash
sudo systemctl reload nginx

这一步同样不会输出任何内容。

5,使用Certbot为新域名获取SSL证书:

必须替换

你必须替换下方代码中的new.laopobao.icu为你自己实际想要获取证书的域名。

bash
sudo certbot --nginx -d new.laopobao.icu

证书获取完成后(successful),在网站中进行测试。

如果访问失败,请检查一下你的服务器防火墙(如 UFW 或云服务商的安全组)是否放行了 80 和 443 端口

(注意:你不需要在防火墙中开放 8000、10086、8888 这种后端端口,因为 Nginx 会在服务器内部帮你转发,只开放 80 和 443 反而更安全!)


教程结束。