plex 的代理重定向配置



希望有人能帮我:)

我尝试为plex重定向配置HAProxy,但尚未找到解决方案。所以基本上要运行plex主页,你应该去=> IPADRESS:PORT/web,重定向到IPADRESS:PORT/web/index.html

我做了这种重定向:

use_backend plex if { hdr_beg(Host) -i plex. }
backend plex
    server plex localhost:32400 check

没关系,我可以加入 plex => plex.mydomain.tld/web

但我希望能够用这个网址加入 plex => plex.mydomain.tld

我试图添加这一行:

reqrep ^([^ :]*) /(.*)     1 /web2

更改很好,我的 URL 切换到 => plex.mydomain.tld/web/index.html

但是我有一个 404 错误...

我应该做什么样的技巧来从plex.mydomain.tld访问plex?

谢谢!

找到一些帮助我弄清楚的信息:

global
    log         127.0.0.1 syslog
    maxconn     1000
    user        haproxy
    group       haproxy
    daemon
    tune.ssl.default-dh-param 4096
    ssl-default-bind-options no-sslv3 no-tls-tickets
    ssl-default-bind-ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH

defaults
    log  global
    mode  http
    option  httplog
    option  dontlognull
    option  http-server-close
    option  forwardfor except 127.0.0.0/8
    option  redispatch
    option  contstats
    retries  3
    timeout  http-request 10s
    timeout  queue 1m
    timeout  connect 10s
    timeout  client 1m
    timeout  server 1m
    timeout  check 10s
listen stats
    bind *:9090
    mode  http
    maxconn  10
    stats  enable
    stats  hide-version
    stats  realm Haproxy Statistics
    stats  uri /
    stats  auth admin:admin
frontend ALL
    bind   *:80
    bind   *:443 ssl crt /etc/haproxy/certs/nomercy.myqnapcloud.com.pem crt /etc/haproxy/certs/nomercy.myqnapcloud.com.pem
    mode   http
    # Define path for lets encrypt
    acl is_letsencrypt path_beg -i /.well-known/acme-challenge/
    use_backend letsencrypt if is_letsencrypt
    # Define hosts
    acl host_website hdr(host) -i nomercy.myqnapcloud.com
    # Direct hosts to backend
    use_backend website if host_website
    # Redirect port 80 to 443
    # But do not redirect letsencrypt since it checks port 80 and not 443
    redirect scheme https code 301 if !{ ssl_fc } !is_letsencrypt
backend letsencrypt
    server letsencrypt 127.0.0.1:8888
backend website
    balance         roundrobin
    option          httpchk GET /check
    cookie          SERVERID insert indirect nocache
    http-check      expect rstring ^UP$
    default-server  inter 3s fall 3 rise 2
    server          server1 192.168.2.151:8888 check
    server          server2 192.168.2.152:8888 check
    server          server3 192.168.2.153:8888 check

listen plex
    bind *:32400 ssl crt /etc/haproxy/certs/nomercy.myqnapcloud.com.pem crt /etc/haproxy/certs/nomercy.myqnapcloud.com.pem
    balance         roundrobin
    option          httpchk GET /check
    http-check      expect rstring ^UP$
    default-server  inter 3s fall 3 rise 2
    server          server1 192.168.2.149:32400 check port 8888
    server          server2 192.168.2.148:32400 check port 8888
    server          server3 192.168.2.147:32400 check port 8888

如果未安装 SSL 凭据,则可以将其删除。

不幸的是,这里的问题与您的 HAProxy 配置无关。相反,是Plex导致了问题。

使用您的配置,当您转到plex.mydomain.tld HAProxy 正在添加/web时,因此 Plex 会获得以下 url:plex.mydomain.tld/web 。这是正确的,但是Plex随后会希望将浏览器转发到plex.mydomain.tld/web/index.html。但是当浏览器发送请求或该 url 时,HAProxy 介入并再次添加该额外/web,并且设置为 Plex 的结果 url plex.mydomain.tld/web/web/index.html不存在,因此您得到 404 错误。

虽然去plex.mydomain.tld/index.html可能会起作用,但我认为由于上述问题,从该页面到任何其他页面的所有链接都不起作用。

要解决这个问题,您可以

  1. 查看Plex的配置,看看是否可以在没有/web的情况下运行它。
  2. 从这里汲取灵感,你可以像这样配置 HAProxy:

    frontend http
        mode http
        bind *:80
        acl plex hdr_beg(Host) -i plex.
        acl root_dir path_reg ^$|^/$
        acl no_plex_header req.hdr_cnt(X-Plex-Device-Name) -i 0
        redirect location http://plex.mydomain.tld/web/index.html 301 if no_plex_header root_dir plex
        use_backend plex if plex
    backend plex
        server plex localhost:32400 check
    

    关键区别在于redirect location行,如果未设置标头X-Plex-Device-Name,它将从/重定向到/web/index.html。您必须检查标头的原因是,plex 似乎将/用于其他内容。

    注意:此配置是一个示例,我根本没有测试过

希望有帮助。

我想

回应一下,我使用了 JamesStewy 提供的解决方案并且它有效,但进行了细微的更正;

redirect location http://plex.mydomain.tld/web/index.html code 301 if no_plex_header root_dir plex

至少,这对我来说是必要的(运行haproxy 1.7.2)。

相关内容

  • 没有找到相关文章

最新更新