好物优选点击查看详情 京东购买

暂无内容

使用frp结合nginx实现对https的反向代理支持

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

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享