继frp后使用nginx统一配置接收https请求,不用修改项目

本地服务器与云服务实现内网穿透ip映射—从创建到实现不用重新部署-CSDN博客

本篇文章基于以上frp内网穿透的继续补充

继内网击穿部署后,统一配置https请求,解决修改项目的麻烦步骤

前言——实现大致原理:

之前我们通过frp内网穿透,将公网ip的请求转到内网服务器的对应的端口实现了ip的映射。

        在图片中我们在云服务器配置了nginx监听拦截监听443https的默认接受请求的端口,根据请求的路径判断解密为http请求转发给对应的端口,对应的端口通过内网穿透的隧道来到本地的内网服务器。

        但是我们使用了阿里云服务器的免费试用期,为了后续跟换云服务器的ip,只需要配置frps的服务端便于更换,所以我们将nginx向下沉。将nginx放在内网客户端的内网的服务器中,配置好,通过frp工具建立连接通道,通过nginx接收https请求,对应不同的请求路径转发http请求到对应服务的端口。

一.下载nginx:

1.下载安装Nginx

yum install nginx -y

2.安装后可以测试一下是否成功安装

nginx -v

二.配置https需要的SSL证书

1.创建证书所在的目录

sudo mkdir -p /etc/nginx/ssl

2给目录添加权限方便nginx可以试用

sudo chmod 777 /etc/nginx/ssl

3.创建生成证书

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/nginx/ssl/server.key \
  -out /etc/nginx/ssl/server.crt \
  -subj "/C=CN/ST=Beijing/L=Beijing/O=YourCompany/CN=没有域名则使用你的ip"

生成私钥和自签名证书(有效期365天,Common Name填写你的域名或IP)其实不合规范的,请求时会显示不安全,可以使用一些符合规范的证书来生成

4.进入我们之前创建的目录

cd /etc/nginx/ssl

进入目录可以看到我们生成的证书的两个文件,由于我们生成时指定了我们生成的目录位置。

5.保险起见给证书文件也设置一下权限

sudo chown root:nginx /etc/nginx/ssl/server.*
sudo chmod 640 /etc/nginx/ssl/server.*

三.配置nginx和启动

1.创建我们配置的文件目录(如果报错已存在就不用)

mkdir /etc/nginx/sites-available

2.创建配置文件

touch /etc/nginx/sites-available/frp-proxy

3.配置监听拦截信息

vim /etc/nginx/sites-available/frp-proxy

I插入,鼠标中键粘贴

ESC,:,wq保存退出

这里没有配置http的强制重定向,这里就不说怎么配置了,反正前端请求改成https就好了

server {
    listen 443 ssl;
    server_name 6.6.6.6;  # 替换为你的域名或IP

    # SSL证书路径
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;
    ssl_session_timeout 1d;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

     # 代理Web服务(8080端口)
    location /web/ {
        proxy_pass http://127.0.0.1:8080/;  # 转发到FRPS的vhost_http_port
        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;
    }

    # 代理图片服务(9000端口,假设通过HTTP访问)
    location /images/ {
        proxy_pass http://127.0.0.1:9000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
   # 在第一个server块内添加新location
location /admin/ {           # 自定义访问路径(如/newservice/)
    proxy_pass http://127.0.0.1:8081/;  # 转发到本机8081端口
    proxy_set_header Host $host;   # 必须保持的header
    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;
}
location /ws/ {
        proxy_pass http://127.0.0.1:8080;  # 替换为内网WS服务地址和端口
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
 
        # 可选:转发原始客户端IP
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

详细描述:

proxy_pass http://127.0.0.1:8080;后面带斜杠则不会拼接上第一个路径比如ws,如果不带斜杠则会拼接上ws如:http://127.0.0.1:8080/ws/接着后续的路径

注意:nginx我们根据请求的路径来区分将请求服务送往本地的哪个端口

4.配置文件软连接

sudo ln -s /etc/nginx/sites-available/frp-proxy /etc/nginx/sites-enabled/

/etc/nginx/sites-enabled/这个文件目录要是没有记得创建,不如可能报错

5.软连接后需要竟然nginx的配置文件中告诉他你的配置文件加载位置。

在nginx目录下即/etc/nginx目录下找到nginx.conf这个配置文件

vim进去编辑,将

include /etc/nginx/sites-enabled/*

这个配置放在

sudo nginx -t        # 测试配置语法

显示ok表示配置没啥问题

6.启动nginx

sudo systemctl restart nginx

补充:

1)查看启动状态

sudo systemctl status nginx

2)停止nginx

sudo systemctl stop nginx

最重要检查:检查我们https的443端口是否被监听,将通过443端口拦截https解析转发http

sudo ss -tuln | grep ':443'

四.修改frpc内网客户端服务器的击穿工具

回顾:

之前我们配置了8080和9000端口的映射,但是现在我们是通过nginx来监听443统一解析https转为http根据请求路径转发到对应的服务的端口,所以内网穿透端口映射不需要这些了,只要443端口。

[common]
省略不变

[ssl]
type = tcp
local_port = 443
remote_port = 443

完成后杀死进程重新启动

同时nginx配置了什么也可以ai问问,如果要https改回http,其实可以拦截http转发http,拦截https转发https,看你需要,由于内网服务器使用的其他软件项目较多,大量的添加https比较麻烦所以采用这个方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值