1. 问题背景与解决方案概述
当我们在服务器上部署frps(Fast Reverse Proxy Server)服务时,默认需要使用7000-7500端口范围。但实际业务场景中,用户往往希望通过域名直接访问(如https://example.com),而不想记忆复杂的端口号(如https://example.com:7443)。此时若80端口已被其他Nginx服务占用,就需要通过反向代理实现无端口访问。
我最近在客户生产环境就遇到了这个典型场景:主站已占用80/443端口,但需要新增frps服务供移动端接入。经过多种方案对比,最终采用Nginx二级目录反代方案,既不影响现有服务,又实现了业务需求。下面分享具体实现过程和踩坑经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 前置条件准备
2.1 环境检查清单
在开始配置前,请确保已具备以下条件:
- 已安装Nginx(版本≥1.18)且运行正常
- 现有Nginx服务已占用80端口(可通过
netstat -tulnp | grep :80验证) - frps服务已部署且运行在非80端口(如默认的7000-7500范围)
- 拥有有效的域名和DNS解析权限
2.2 端口冲突验证方法
通过以下命令检查端口占用情况:
bash复制# 查看80端口占用进程
sudo lsof -i :80
# 查看frps运行端口(通常为7000)
ps aux | grep frps
3. Nginx反向代理配置详解
3.1 核心配置模板
在现有Nginx配置中(通常在/etc/nginx/conf.d/目录下)新增一个server块:
nginx复制server {
listen 80;
server_name frp.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:7000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded
