首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于plex的Haproxy重定向配置?

用于plex的Haproxy重定向配置?
EN

Stack Overflow用户
提问于 2016-01-20 20:21:10
回答 3查看 5.5K关注 0票数 0

希望有人能帮助我:)

我尝试为plex重定向配置HAProxy,但是还没有找到解决方案。基本上,要运行plex主页,您应该转到=> IPADRESS:PORT/web,重定向到IPADRESS:PORT/web/index.html.

我做了这样的重定向:

代码语言:javascript
复制
use_backend plex if { hdr_beg(Host) -i plex. }

backend plex
    server plex localhost:32400 check

这没问题,我可以加入plex => plex.mydomain.tld/web

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

我尝试添加这一行:

代码语言:javascript
复制
reqrep ^([^\ :]*)\ /(.*)     \1\ /web\2

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

但我有一个404错误...

我应该怎么做才能从plex.mydomain.tld访问plex?

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2018-01-20 10:47:06

我找到了一些帮助我解决这个问题的信息:

代码语言:javascript
复制
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凭据,则可以将其删除。

票数 2
EN

Stack Overflow用户

发布于 2016-01-22 14:09:04

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

示例

使用您的配置,当您转到plex.mydomain.tld时,plex会添加到/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可能会起作用,但我假设由于上述问题,从该页面到任何其他页面的所有链接都不会起作用。

要解决这个问题,您可以使用

Plex查看一下它的配置,看看是否有可能在没有here的灵感的情况下运行它,你可以这样配置

前端http模式http绑定*:80acl plex hdr_beg(主机) -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检查

关键的区别在于redirect location行,如果没有设置头文件X-Plex-Device-Name,它将从/重定向到/web/index.html。你必须检查报头的原因是,plex似乎将/用于其他事情。

注意:此配置只是一个示例,我根本没有对此进行测试

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2017-02-21 19:33:44

我想回应的是,我使用了JamesStewy提供的解决方案,它起作用了,只做了一些小的修正;

代码语言:javascript
复制
redirect location http://plex.mydomain.tld/web/index.html code 301 if no_plex_header root_dir plex

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34899940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档