NGINX子目录跳转内网NAS IP仅内网生效,公网域名访问失败如何解决
问题原因
你当前配置的跳转规则指向内网IP 192.168.1.10,公网用户访问时浏览器无法识别该内网地址,且跳转规则缺少协议头,会被浏览器识别为当前域名下的相对路径,最终导致访问失效。
解决方案(推荐:反向代理)
无需额外映射群晖端口到公网,用户访问时地址栏不会发生变化,安全性更高。修改NGINX配置如下:
location ^~ /drive { # 末尾斜杠会自动移除请求路径中的/drive前缀 proxy_pass http://192.168.1.10/; # 传递请求头保证群晖服务正常识别请求 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; # Synology Drive 依赖WebSocket,添加以下配置保证功能正常 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # 可选:如果群晖启用HTTPS且用自签名证书,添加下面两行跳过证书校验 # proxy_ssl_verify off; # proxy_ssl_server_name on; }
配置修改完成后,先执行nginx -t测试配置合法性,确认无问题后执行nginx -s reload重载配置即可生效。
备选方案:修正重定向规则
如果你确实需要跳转而非代理,需要先在路由器上把群晖Synology Drive的对应端口(默认HTTP为5000、HTTPS为5001)映射到公网,再修改NGINX配置:
location ^~ /drive { # 此处端口和协议要和你路由器映射的群晖端口保持一致 rewrite ^/drive/?(.*)$ https://$host:5001/$1 permanent; }
重载NGINX配置后生效。
内容的提问来源于stack exchange,提问作者Miracuru
相关产品推荐
相关产品推荐

