环境说明
个人家里的服务器采用双线路访问
- frp 方式 (主要访问群晖nas网页版、esxi控制台等)
- 公网IP (pt辅种、drive文件同步)
架构图如下
目前公网IP访问群晖nas网页版手机电脑都没有问题,nginx + frp代理的方式PC端也没用问题,但是手机端会一直提示Loading..加载中
首先我们先看一下frpc配置
[common]
server_addr = FRP服务端IP
server_port = 端口号
token = i4t.com
[esxi] <<=== esxi配置
protocol = kcp
local_ip = 192.168.31.100
local_port = 443
remote_port = 8098
custom_domains = esxi.frps.cn
[nas] <<=== 白群晖920+配置
type = tcp
local_ip = 192.168.31.198
local_port = 5000
remote_port = 4010
custom_domains = nas.frps.cn
use_encryption = true
use_compression = true
force_https = 301
[nas-j1900] <<=== 黑群晖j1900配置
type = tcp
local_ip = 192.168.31.199
local_port = 5000
remote_port = 3011
[jumpserver]
type = tcp
local_ip = 192.168.31.99
local_port = 8080
remote_port = 2002
[windows01]
type = tcp
local_ip = 192.168.31.177
local_port = 3389
remote_port = 3984
[windows02]
type = tcp
local_ip = 192.168.31.178
local_port = 3389
remote_port = 3985
Nginx 采用宝塔安装,直接给大家看下nginx upsteam配置
已经添加ws的支持
PC端效果图
移动端访问提示如下
使用内网IP以及frp ip访问均没有问题。所以想到是nginx的问题,查看访问状态为多个页面404状态。刚开始猜测是nginx upstream匹配不到,但是后面修改过还是出现类似的情况
F12错误如下
通过经验仔细想了一下,如果是nginx资源匹配的问题,那么应该所有群晖静态资源都无法访问才对,但是目前看只有这js和css有问题
解决方法
解决办法
在nginx upsteam代理中,添加对http 1.1的支持
proxy_http_version 1.1;
通过网上查找发现问题,nginx在代理是默认http版本为1.0,由于文件的下载涉及到使用分块传递,但http1.0是不支持这个特性的。所以服务端为1.1版本无法进行转发
点击保存后我们浏览器模拟手机端再次访问,就可以正常访问了
目前排查出群晖7.x才会有这个问题,在早期6.x版本中。是没有这个问题!
set $host_fixed $http_host;
if ($http_host = “”) {
set $host_fixed “default”;
}
proxy_set_header Host $host_fixed;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_hide_header X-Powered-By;
设置了proxy_http_version 1.1 也不行哦。