步骤 1:安装Nginx
在Ubuntu系统上安装Nginx:
sudo apt-get install nginx nginx-full -y --install --fix-bug sudo nginx -v
确保Nginx已正确安装并处于最新版本。
步骤 2:配置Nginx作为FRP服务器
创建Nginx配置文件,通常存放在/etc/nginx/sites-available/目录下:
sudo mkdir -p /etc/nginx/sites-available sudo nano /etc/nginx/sites-available/frp
在编辑器中输入以下内容:
server {
listen 80;
listen [::]:80;
server_name your-domain.com;
root /var/www/frp;
access_log /var/log/nginx/frp.access.log;
error_log /var/log/nginx/frp.error.log;
location / {
proxy_pass http://localhost:80;
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;
}
}
步骤 3:加载Nginx配置
将配置文件加载到/etc/nginx/sites-enabled/目录:
sudo ln -sf /etc/nginx/sites-available/frp /etc/nginx/sites-enabled/
步骤 4:重启Nginx
确保服务正常运行:
sudo systemctl restart nginx sudo systemctl status nginx
步骤 5:获取Let's Encrypt SSL证书
确保已注册域名并配置了备用DNS记录,使用Let's Encrypt获取证书:
sudo letsencrypt cert --nginx /etc/nginx/sites-enabled/frp -d your-domain.com -w /etc/letsencrypt
步骤 6:安装SSL证书
安装证书并生成私钥:
sudo letsencrypt install -w /etc/letsencrypt
步骤 7:配置FRP客户端
选择一个FRP客户端(如openfrp)并安装:
sudo apt-get install openfrp -y
配置FRP客户端配置文件:
sudo nano /etc/openfrp/frp.conf
server {
bind 0...:8443
protocol tcp
source 0...:80
reverse_proxy 127...1:80
ssl enable
ssl protocol TLSv1.2
ssl ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-CTU-SHA3/ECDSA-AES128-GCM-SHA256
ssl precomp on; # Force use of precompiled ciphers
ssl session cache shared:SE:10:10
ssl session timeout 10
}
步骤 8:配置Nginx作为FRP代理
在Nginx配置文件(/etc/nginx/sites-available/frp)中,添加FRP代理部分:
server {
listen 80;
listen [::]:80;
server_name your-domain.com;
root /var/www/frp;
access_log /var/log/nginx/frp.access.log;
error_log /var/log/nginx/frp.error.log;
location / {
proxy_pass http://localhost:8443;
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;
proxy_set_header X-Forwarded-Path /;
}
}
步骤 9:重启Nginx
确保Nginx服务正常运行:
sudo systemctl restart nginx sudo systemctl status nginx
步骤 10:测试FRP服务器
在浏览器中访问https://your-domain.com,验证是否能够正确反向代理到内部服务器。
验证
- 访问外部IP:使用外部IP地址或域名访问FRP服务器,确认是否能正确反向代理到内部服务。
- 检查防火墙:确保防火墙开放了80和443端口,允许Nginx接收连接。
- 检查日志:查看Nginx日志,确认是否有错误信息,确保配置无误。
常见问题
- 域名解析错误:确保域名正确指向服务器IP地址。
- 防火墙设置:检查防火墙规则,确认端口80和443未被阻止。
- 证书问题:检查证书是否已正确安装并与域名关联。
通过以上步骤,您可以成功搭建一个使用Nginx作为FRP服务器的解决方案,确保内部服务器可以通过外部域名访问。









