2.frps,也就是服务器端的设置
在本例中,nginx和frps服务器端是安装在一起的。
主域名:test333.com www.test333.com (这是购买的带有ipv4和ipv6的外域服务器)
远程服务: camera.test333.com (公司的摄像头) home.test333.com (家中的摄像头) photos.test333.com (新增加的piwigo相册)
3. 增加二级域名、解析到服务器上、通过安装certbot为每一个域名申请CA证书。
这一部分可以自行搜索一番,下面主要是CA证书的申请
certbot --nginx -d photos.xykjservice.com ##可以多添加几个 -d 将几个域名合并到一个证书中
申请成功后,会出现证书位置的相关信息,把他们复制保存起来,以便后期使用
CA证书格式的转换:
cd /etc/letsencrypt/live/photos.test333.com.com/ openssl x509 -in fullchain.pem -out fullchain.crt openssl rsa -in privkey.pem -out privkey.key
CA证书的撤销
1
|
certbot revoke --cert-path /etc/letsencrypt/live/photos.test333.com.com/cert.pem
|
–cert-path 后面跟证书的路径,要撤销哪个,就写哪个。注意最后的文件是cert.pem,
建议:最好单独为每个二级域名申请证书,主要是方便使用。尽管泛域名证书看上去管理更简单,但是使用比较麻烦,我还没有找到好的解决思路,没有验证出来。
4. frp服务端和客户端的配置。和http一样,没有差别
4.1 服务端 frps.ini
vim /etc/frp/frps.ini #frps.ini的内容 [common] bind_port = 54321 vhost_http_port = 8080
4.2 客户端 frpc.ini 这里采用了简单的配置法,和http模式一样。 主要是通过服务器上的nginx进行转发和重写
# 公司摄像头客户端frpc.ini 内容 [common] server_addr = www.test333.com server_port = 54321 [web-1] type = http local_ip = 127.0.0.1 local_port = 80 custom_domains = camera.test333.com # 家中摄像头客户端frpc.ini 内容 [common] server_addr = www.test333.com server_port = 54321 [web-2] type = http local_ip = 127.0.0.1 local_port = 80 custom_domains = home.test333.com # piwigo相册客户端frpc.ini 内容 [common] server_addr = www.test333.com server_port = 54321 [web-3] type = http local_ip = 127.0.0.1 local_port = 80 custom_domains = photos.test333.com
5. 反向代理服务器 nginx的配置。 关键步骤
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
vim /etc/nginx/nginx.conf
# 这里仅对新的photos.test333.com的配置段进行举例,测试时仅申请了一个域名的CA证书。其相关配置内容如下:
server {
server_name photos.test333.com ;
location / {
proxy_pass http: //127.0.0.1:8080; ##将本地8080端口(frps所服务的端口)所获得的内容作为该域名的内容,nginx会根据域名进行自动匹配和转跳
proxy_redirect http: //$host/ http://$http_host/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Frowarded-Proto https;
proxy_set_header Host $host;
}
### SSL功能的开启和证书的配置
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/photos.test333.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/photos.test333.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
##将http转跳为 https
server {
if ($host = photos.test333.com) {
return 301 https: //$host$request_uri;
} # managed by Certbot
listen 80;
server_name photos.test333.com ;
return 404; # managed by Certbot
}
|
6. 后端frpc所在远程服务的 nginx配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
vim /etc/nginx/sites-enabled/ default
## 内容如下
server {
listen 80 default_server;
listen [::]:80 default_server;
root / var /www/html;
# Add index.php to the list if you are using PHP
index index.html index.php index.htm index.nginx-debian.html;
########下面的 SSL配置可以不做,因为主要是通过frps所在服务的nginx实现的http → https。这里是因为想在局域网下也用https才将证书拷贝过来的。 # SSL configuration
#
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate /home/live/photos.test333.com/fullchain.crt
ssl_certificate_key /home/live/photos.test333.com //privkey.key
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
}
}
|
7.重启服务。
先检查一下nginx配置是否有错: nginx -t 。 根据错误提示进行需改
1
2
3
4
5
6
7
|
##在服务端上
systemctl restart frps
systemctl restart nginx
##在客户端上
systemctl restart frpc
systemctl restart nginx
|
8. 展示结果
先清除一下历史记录和cookie。 输入: http://photos.test333.com 看是否能正常打开。若打开正常,则将地址栏的地址复制一下,粘贴到txt文档中,看网址前缀知否变成了https, 如果是,则说明配置是成功的。
原文链接:https://blog.csdn.net/lggirls/article/details/128022650