建设银行互联网网站首页,网站开发百度百科,做自己的网站不是免费的,免费网站入口网站免费进使用Nginx前置代理与FRP实现安全内网穿透 一、方案概述
本方案通过Nginx统一管理HTTPS证书和域名路由#xff0c;FRP仅处理TCP层流量穿透#xff0c;实现#xff1a;
多子域名共享443端口证书集中管理避免FRP重复处理HTTPS生产级安全加固
二、服务端部署#xff08;FRP …使用Nginx前置代理与FRP实现安全内网穿透 一、方案概述
本方案通过Nginx统一管理HTTPS证书和域名路由FRP仅处理TCP层流量穿透实现
多子域名共享443端口证书集中管理避免FRP重复处理HTTPS生产级安全加固
二、服务端部署FRP Nginx
1. FRP服务端配置Docker版
frps.toml 核心配置
bindAddr 0.0.0.0
bindPort 7000 # FRP控制通道端口
transport.tls.force true # 强制TLS加密auth.method token
auth.token your_secure_token# 开放Nginx转发用的TCP端口范围
allowPorts [{ start 10080, end 10100 }]# 管理面板可选
webServer.addr 0.0.0.0
webServer.port 7500
webServer.user admin
webServer.password adminSecure123Docker启动命令
docker run -d --name frps \-p 7000:7000 \-p 7500:7500 \-p 10080-10100:10080-10100 \ # 映射开放Nginx转发用的TCP端口范围--network host \ # 推荐host模式避免端口映射嵌套-v /data/frp/frps.toml:/etc/frp/frps.toml \-v /data/frp/logs:/var/log/frp \snowdreamtech/frps:latest端口映射说明
7000FRP客户端连接端口10080-10100Nginx反向代理转发端口7500管理面板端口
2. Nginx服务端配置
证书准备
mkdir -p /etc/nginx/ssl/
# 将证书放入以下路径需包含完整链
/etc/nginx/ssl/www.loveddz.com.crt
/etc/nginx/ssl/www.loveddz.com.keyNginx虚拟主机配置
# /etc/nginx/conf.d/frp_proxy.conf
# 主域名代理
server {listen 443 ssl;server_name www.loveddz.com;ssl_certificate /etc/nginx/ssl/www.loveddz.com.crt;ssl_certificate_key /etc/nginx/ssl/www.loveddz.com.key;location / {proxy_pass http://127.0.0.1:10080; # 转发到FRP监听的端口proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}# 子域名代理示例
server {listen 443 ssl;server_name api.loveddz.com;ssl_certificate /etc/nginx/ssl/api.loveddz.com.crt;ssl_certificate_key /etc/nginx/ssl/api.loveddz.com.key;location / {proxy_pass http://127.0.0.1:10081;proxy_set_header Host $host;}
}Docker启动Nginx
docker run -d --name nginx \--network host \ # 与frps共享网络命名空间-v /etc/nginx/conf.d:/etc/nginx/conf.d \-v /etc/nginx/ssl:/etc/nginx/ssl \nginx:latest三、客户端配置FRP TCP模式
frpc.toml 示例
#
# 全局配置
#
serverAddr 114.113.112.111 # FRP服务器IP
serverPort 7000 # 与服务端bindPort一致
auth.method token
auth.token your_secure_token # 与服务端auth.token一致
transport.tls.enable true # 启用TLS加密传输必须与服务端一致#
# 代理配置TCP模式
# # 代理1主域名 www.loveddz.com→ 本地8088
[[proxies]]
name web_tcp
type tcp # 必须为tcp模式由Nginx处理HTTPS
localIP 127.0.0.1
localPort 8088 # 本地服务端口
remotePort 10080 # 对应Nginx的proxy_pass端口# 代理2子域名 api.loveddz.com→ 本地8089
[[proxies]]
name api_tcp
type tcp
localPort 8089
remotePort 10081 # Nginx中配置的另一个proxy_pass端口四、安全加固建议 防火墙规则 # 仅开放必要端口
ufw allow 443,7000,7500,10080:10081/tcpNginx安全头 add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header Content-Security-Policy default-src self;FRP日志监控 # 实时监控异常连接
tail -f /data/frp/logs/frps.log | grep -E failed|error五、验证与调试 检查服务连通性 curl -vk https://www.loveddz.com
curl -vk https://api.loveddz.com端口占用检查 ss -tulnp | grep -E 7000|7500|10080Nginx日志分析 docker logs -f nginx | grep 10080六、常见问题解决
问题现象解决方案Nginx报502 Bad Gateway检查FRP客户端是否运行且localPort与本地服务一致HTTPS证书错误确保证书包含完整链且域名与server_name完全匹配FRP连接超时检查服务端防火墙/安全组是否放行7000端口
七、方案优势
证书集中管理无需在FRP中配置证书性能优化Nginx处理HTTPS卸载降低FRP负担扩展性强新增子域名只需修改Nginx配置无需重启FRP 部署效果 通过 https://www.loveddz.com 访问本地8088端口服务https://api.loveddz.com 访问8089端口服务所有HTTPS加密由Nginx统一处理。