希望有人能帮助我:)
我尝试为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.mydomain.tld的plex
我尝试添加这一行:
reqrep ^([^\ :]*)\ /(.*) \1\ /web\2更改很好,我的URL切换到Webplex.mydomain.tld/ => /index.html
但我有一个404错误...
我应该怎么做才能从plex.mydomain.tld访问plex?
谢谢!
发布于 2018-01-20 10:47:06
我找到了一些帮助我解决这个问题的信息:
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凭据,则可以将其删除。
发布于 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似乎将/用于其他事情。
注意:此配置只是一个示例,我根本没有对此进行测试
希望这能有所帮助。
发布于 2017-02-21 19:33:44
我想回应的是,我使用了JamesStewy提供的解决方案,它起作用了,只做了一些小的修正;
redirect location http://plex.mydomain.tld/web/index.html code 301 if no_plex_header root_dir plex至少,这对我来说是必要的(运行haproxy 1.7.2)。
https://stackoverflow.com/questions/34899940
复制相似问题