深浅模式
配置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控制台
打开我们托管的域名(我的是laopobao.icu)
点击页面左侧的 DNS
→ 记录
然后在页面中点击添加记录
在域名管理界面添加A记录。
- 类型选择 A
- 名称:jiuguan(这个最终将成为域名的前缀,例如jiuguan.laopobao.icu)
- IPv4地址:写你实际的服务器IP地址,我图中的1.1.1.1是为了演示写的假IP地址。
注意
由于我们要通过 jiuguan.laopobao.icu,访问 1.1.1.1:8000(酒馆);
通过 panel.laopobao.icu,访问1.1.1.1:10086,所以我们配置两条域名解析。
(1.1.1.1是为了演示写的假IP)
三、配置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
输出配置文件中的内容,就成功啦。
如图:
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.icu
和panel.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):
输入你的邮箱地址,然后按回车,如图:
当提示输入 (Y)es/(N)o
时,输入y
并按回车(不区分大小写)
【一共需要输入两次 y
】
稍等一会儿,等待证书申请完成。
当提示:Successfully deployed certificate for jiuguan.laopobao.icu to xxxxxx
时,就是成功了。
3,验证ssl证书
现在,访问你设置好的反代,例如我的 panel.laopobao.icu
成功的标志
- 网站能够正常访问
- 地址栏有锁
- 网站地址以
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)的话。)
教程结束。