众所周知,家宽都没有 80/443
端口,只能在路由中设置端口映射。问题如果 url 尾没加"/
",nginx 自动会跳转,例如 https://www.test.com:44311/index
被错误的重定向至https://www.test.com/index/
。作为不熟积运维的人,这个问题很头疼,我 google 了很久才找出来。更头疼的是,DSM 作为一个魔改 linux,很多地方会重写配置文件。
我 google 了很久,都解决不了。我估关键应该是没有找到正确修改 nginx 配置文件的地方
下面是我找到最可能解决的办法,但还是没效。
## DSM 6.2 # 创建对应域名的配置文件 # /usr/local/etc/nginx/conf.d/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/user.confg location / { if (-d $request_filename) { rewrite [^/]$ $scheme://$http_host$uri/ permanent; } } ## 执行命令重启 nginx synoservicecfg --restart nginx
![]() | 1 stille 2020-05-12 13:16:05 +08:00 是的.当 DSM 的 http 跳 https,也会强制跳 5001 端口. 甚至 webstation 里也没强制跳转 https 的选项,也不支持多主机头. 群晖默认都是认为用户有 80/443 的 |
2 alexlip 2020-05-12 13:50:07 +08:00 nginx 内置变量 $server_port 这个参数适用不? |
3 tankren 2020-05-12 13:55:07 +08:00 谁说家宽没有 443 的? :doge |
![]() | 4 nvkou 2020-05-12 13:58:50 +08:00 via Android 用 upstream 不行吗?直接反代。 |
![]() | 5 Atomo 2020-05-12 13:59:02 +08:00 |
6 cq65617875 2020-05-12 14:01:00 +08:00 直接反代+1 |
![]() | 7 LokiSharp 2020-05-12 14:03:59 +08:00 rewrite [^/]$ $scheme://$http_host$uri/ permanent; 这边我记得得手动加 port 的 |
![]() | 8 moxuanyuan OP @tankren #3 大部分都没有吧。。 |
![]() | 9 moxuanyuan OP @nvkou #4 反代可以。。但要多用一台公网 server 。。。这不是我想要的方案 |
10 tankren 2020-05-12 14:39:56 +08:00 @moxuanyuan 试试 ipv6 |
![]() | 11 nvkou 2020-05-12 14:41:14 +08:00 via Android @moxuanyuan 不是,你反代可以 4433>443 啊。干嘛还要额外公网 |
![]() | 12 qping 2020-05-12 16:19:26 +08:00 nginx 在 URL 末尾不加斜杠会 301 的问题,之前在生产环境碰到过,谢谢楼主给我解惑了。 哈哈哈哈哈哈 |
![]() | 13 qping 2020-05-12 16:33:50 +08:00 |
15 xsxu01 2020-06-16 14:25:10 +08:00 还真有人碰到相同的问题了。 我最近也在为这个问题头疼。不知道是不是因为想用原因造成的。 dsm 里面安装的 wordpreess 默认是在一个文件夹里面,不在根目录里面。我试过 web 的虚拟机也不灵。公网访问用花生壳就会导致错误跳转丢失端口信息。暂时还没有查到解决方案。对于我这个小白来说估计是比较复杂的问题。求大拿出现几下给搞定吧。 |