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,编辑配置文件内容

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

nano编辑器简单用法

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

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

请注意

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

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

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

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

    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;
    }
}

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

    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;
    }
}

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

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

ctrl+x,退出编辑器。

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

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

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

如图:

alt text

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

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

四、使用cerbot获取SSL证书

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

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

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

2,使用Cerbot获取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

2,粘贴配置文件

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

(以 new.laopobao.icu 为例)

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

ts
# 配置 new.laopobao.icu 的反向代理 
server {
    listen 80;
    server_name new.laopobao.icu;  # 修改为新的域名 

    location / {
        proxy_pass http://127.0.0.1:8080;  # 修改为新的端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

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)的话。)


教程结束。

本站点由 老婆宝 搭建