前两篇文章已经说了frps和frpc的相关配置,没有公网ip时通过openwrt上配置frpc实现内网的穿透。但如果我们把vhost_http_port和vhost_https_port配置成80和443的话,服务器上就不方便再搭建其他网站了。今天介绍一种服务器上nginx和frps共用80、443端口的方法。
首先说一下我的环境,服务器用的阿里云轻量应用服务器,ubuntu 20.04 安装宝塔7.9.3 并安装lnmp环境。服务器的frps安装参考第一篇文章。vhost_http_port和vhost_https_port依然配置成9004和9005。
将域名解析到服务器,比如我的是bgs.xxx.com 将该域名解析到运行frps的服务器上,客户端frpc的配置和第二篇文章一致。
接下来进行服务器上的配置
1、在宝塔上添加网站,网站的域名为bgs.xxx.com
2、点击网站的设置,申请证书
3、选择配置文件在最后一个}前添加 如下内容,9004端口是我的frps的http监听端口。
location /
{
proxy_pass http://127.0.0.1:9004;
proxy_redirect off;
proxy_set_header Host $host:80;
proxy_ssl_server_name on;
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;
}
4、删除以下内容。
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
至此就可以实现nginx和frps公用80/443端口了,运行在内网需要映射的网站就添加和删除以上内容。运行在服务器上的保持配置文件不变。