V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
moxuanyuan
V2EX  ›  NGINX

如何解决在使用端口映射情况, dsm nginx 跳转到内部端口的问题?

  •  
  •   moxuanyuan · 2020-05-12 12:50:37 +08:00 · 3800 次点击
    这是一个创建于 1685 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Issue

    众所周知,家宽都没有 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
    

    参考

    15 条回复    2020-06-16 14:25:10 +08:00
    stille
        1
    stille  
       2020-05-12 13:16:05 +08:00
    是的.当 DSM 的 http 跳 https,也会强制跳 5001 端口.

    甚至 webstation 里也没强制跳转 https 的选项,也不支持多主机头.

    群晖默认都是认为用户有 80/443 的
    alexlip
        2
    alexlip  
       2020-05-12 13:50:07 +08:00
    nginx 内置变量 $server_port 这个参数适用不?
    tankren
        3
    tankren  
       2020-05-12 13:55:07 +08:00
    谁说家宽没有 443 的? :doge
    nvkou
        4
    nvkou  
       2020-05-12 13:58:50 +08:00 via Android
    用 upstream 不行吗?直接反代。
    Atomo
        5
    Atomo  
       2020-05-12 13:59:02 +08:00
    cq65617875
        6
    cq65617875  
       2020-05-12 14:01:00 +08:00
    直接反代+1
    LokiSharp
        7
    LokiSharp  
       2020-05-12 14:03:59 +08:00
    rewrite [^/]$ $scheme://$http_host$uri/ permanent; 这边我记得得手动加 port 的
    moxuanyuan
        8
    moxuanyuan  
    OP
       2020-05-12 14:28:58 +08:00
    @tankren #3 大部分都没有吧。。
    moxuanyuan
        9
    moxuanyuan  
    OP
       2020-05-12 14:33:41 +08:00
    @nvkou #4 反代可以。。但要多用一台公网 server 。。。这不是我想要的方案
    tankren
        10
    tankren  
       2020-05-12 14:39:56 +08:00
    @moxuanyuan 试试 ipv6
    nvkou
        11
    nvkou  
       2020-05-12 14:41:14 +08:00 via Android
    @moxuanyuan 不是,你反代可以 4433—>443 啊。干嘛还要额外公网
    qping
        12
    qping  
       2020-05-12 16:19:26 +08:00
    nginx 在 URL 末尾不加斜杠会 301 的问题,之前在生产环境碰到过,谢谢楼主给我解惑了。

    哈哈哈哈哈哈
    qping
        13
    qping  
       2020-05-12 16:33:50 +08:00
    控制面板 > 外部访问 有一个端口设置,楼主可以尝试下有没有用
    Kelan
        14
    Kelan  
       2020-05-12 17:35:39 +08:00
    @qping 大概 lz 要求内网还是直接用 443,那就解决不了问题。
    xsxu01
        15
    xsxu01  
       2020-06-16 14:25:10 +08:00
    还真有人碰到相同的问题了。 我最近也在为这个问题头疼。不知道是不是因为想用原因造成的。
    dsm 里面安装的 wordpreess 默认是在一个文件夹里面,不在根目录里面。我试过 web 的虚拟机也不灵。公网访问用花生壳就会导致错误跳转丢失端口信息。暂时还没有查到解决方案。对于我这个小白来说估计是比较复杂的问题。求大拿出现几下给搞定吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   930 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:39 · PVG 06:39 · LAX 14:39 · JFK 17:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.