目前我在服务器上使用带有HAProxy包的pfSense,因为我可以通过GUI轻松地配置它。
我将HAProxy配置为充当与本指南相对应的反向代理:https://blog.devita.co/pfsense-to-proxy-traffice-for-websites-using-pfsense/
我的用例是,我试图设置Seafile,它使用端口8000作为web GUI,端口8082作为文件服务器。现在我可以访问web GUI,但我不能上传,下载或共享文件。
我的配置:
# Automaticaly generated, dont edit manually. # Generated on: 2018-09-29 19:24 global maxconn 1000 stats socket /tmp/haproxy.socket level admin gid 80 nbproc 1 hard-stop-after 15m chroot /tmp/haproxy_chroot daemon tune.ssl.default-dh-param 8192 server-state-file /tmp/haproxy_server_state ssl-default-bind-ciphers TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS13-CHACHA20-POLY1305-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets ssl-default-server-ciphers TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS13-CHACHA20-POLY1305-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 ssl-default-server-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets listen HAProxyLocalStats bind 127.0.0.1:2200 name localstats mode http stats enable stats admin if TRUE stats show-legends stats uri /haproxy/haproxy_stats.php?haproxystats=1 timeout client 5000 timeout connect 5000 timeout server 5000 frontend shared-frontend-merged bind X.X.X.X:443 name X.X.X.X:443 ssl crt-list /var/etc/haproxy/shared-frontend.crt_list mode http log global option http-keep-alive option forwardfor acl https ssl_fc http-request set-header X-Forwarded-Proto http if !https http-request set-header X-Forwarded-Proto https if https timeout client 30000 http-response set-header Strict-Transport-Security max-age=15768000 acl aclcrt_shared-frontend var(txn.txnhost) -m reg -i ^([^\.]*)\.domain\.com(:([0-9]){1,5})?$ acl ACL1 var(txn.txnhost) -m str -i test.domain.com acl ACL2 var(txn.txnhost) -m str -i service1.domain.com acl ACL3 var(txn.txnhost) -m str -i service2.domain.com http-request set-var(txn.txnhost) hdr(host) default_backend test.domain.com_ipv4 default_backend service1.domain.com_ipvANY default_backend service2.domain.com_ipvANY frontend http-to-https bind X.X.X.X:80 name X.X.X.X:80 mode http log global option http-keep-alive timeout client 30000 http-request redirect scheme https backend test.domain.com_ipv4 mode http id 10100 log global timeout connect 30000 timeout server 30000 retries 3 source ipv4@ usesrc clientip option httpchk GET / server testvm-server01 10.100.10.101:54080 id 10101 check inter 1000 backend service1.domain.com_ipvANY mode http id 102 log global timeout connect 30000 timeout server 30000 retries 3 option httpchk GET / server seafile-vm-01 10.100.10.103:8000 id 101 check inter 1000 backend service2.domain.com_ipvANY mode http id 104 log global timeout connect 30000 timeout server 30000 retries 3 option httpchk GET / server seafile-vm-02 10.100.10.103:8082 id 103 check inter 1000
致以最诚挚的问候,
比奥涅耶
在Reddit上一个很棒的用户的帮助下,我解决了我的问题。
第一个问题是我错误地配置了前端,因此有3个default_backends。这就是为什么每个服务都指向同一个虚拟机的原因。要解决这个问题,我只需添加与ACL名称对应的if条件。
第二个问题是我的Service2在HAProxy stats页面上显示为DOWN。我不得不将健康检查方法从HTTP更改为Basic,这最终解决了所有问题。
# Automaticaly generated, dont edit manually.
# Generated on: 2018-10-02 16:59
global
maxconn 1000
stats socket /tmp/haproxy.socket level admin
gid 80
nbproc 1
hard-stop-after 15m
chroot /tmp/haproxy_chroot
daemon
tune.ssl.default-dh-param 8192
server-state-file /tmp/haproxy_server_state
ssl-default-bind-ciphers TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS13-CHACHA20-POLY1305-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
ssl-default-server-ciphers TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS13-CHACHA20-POLY1305-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
ssl-default-server-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
listen HAProxyLocalStats
bind 127.0.0.1:2200 name localstats
mode http
stats enable
stats admin if TRUE
stats show-legends
stats uri /haproxy/haproxy_stats.php?haproxystats=1
timeout client 5000
timeout connect 5000
timeout server 5000
frontend shared-frontend-merged
bind X.X.X.X:443 name X.X.X.X:443 ssl crt-list /var/etc/haproxy/shared-frontend.crt_list
mode http
log global
option http-keep-alive
option forwardfor
acl https ssl_fc
http-request set-header X-Forwarded-Proto http if !https
http-request set-header X-Forwarded-Proto https if https
timeout client 30000
http-response set-header Strict-Transport-Security max-age=15768000
acl aclcrt_shared-frontend var(txn.txnhost) -m reg -i ^([^\.]*)\.domain\.com(:([0-9]){1,5})?$
acl ACL1 var(txn.txnhost) -m beg -i test.domain.com
acl ACL2 var(txn.txnhost) -m beg -i service1.domain.com
acl ACL3 var(txn.txnhost) -m beg -i service2.domain.com
http-request set-var(txn.txnhost) hdr(host)
use_backend test.domain.com_ipv4 if ACL1
use_backend service1.domain.com_ipvANY if ACL2
use_backend service2.domain.com-seafhttp_ipvANY if ACL3
frontend http-to-https
bind X.X.X.X:80 name X.X.X.X:80
mode http
log global
option http-keep-alive
timeout client 30000
http-request redirect scheme https
backend test.domain.com_ipv4
mode http
id 10100
log global
timeout connect 30000
timeout server 30000
retries 3
source ipv4@ usesrc clientip
option httpchk GET /
server testvm-server01 10.100.10.101:54080 id 10101 check inter 1000
backend service1.domain.com_ipvANY
mode http
id 102
log global
timeout connect 30000
timeout server 30000
retries 3
option httpchk GET /
server seafile-vm-01 10.100.10.103:8000 id 101 check inter 1000
backend service2.domain.com-seafhttp_ipvANY
mode http
id 104
log global
timeout connect 30000
timeout server 30000
retries 3
server seafile-vm-02 10.100.10.103:8082 id 103 check inter 1000
比奥涅耶
需要一个SpringRest服务,需要将输入作为JSON内容和多个多部分文件。
问题内容: 所以我有四个桌子。每个表都有一个与前一个表ID相同的ID。因此,我的点击表中有一个ID和一个广告来源的ID。在广告表中,它有一个广告ID和一个来自其广告系列的ID。所以这是一个例子。 因此,要找出表4中的值从何而来,我需要遍历每个表并检查它们具有哪个ID。基本上,我想知道表1中的哪些值与表4中的值相关联。 表4中的内容是网站的访问者,表1中的内容是互联网广告。我想知道哪些访客来自哪些广
我正在尝试使用NettyV4编写代理服务器。0.30. 我已经浏览了发布中包含的代理示例(http://netty.io/4.0/xref/io/netty/example/proxy/package-summary.html).不过我的要求有点不同。 在我的例子中,我的netty实例后面可能有多个服务器,所以我不能直接在ChannelActive方法中创建客户端引导。我的客户端基本上发送两个请求
本文向大家介绍详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点,包括了详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点的使用技巧和注意事项,需要的朋友参考一下 上一篇分享了 Nginx + Tomcat 反向代理 负载均衡 集群 部署指南,感觉还是相当实用型的,但是一般集群部署是基于大访问量的,可能有的企业用不到,类似一些企业官网,访
我有一个Nginx服务器托管一个web应用程序,当直接访问时工作正常。其配置如下 现在我必须从另一个Nginx服务器上服务这个应用程序,所以我设置了如下所示的反向代理 当我从server2访问应用程序时,我会得到如下错误,例如,当我访问HTTP:server2.com/app/css/app.css时 [error]6601#0:*1 open()“/data/www/app/css/app.cs
问题内容: 我在一台机器上有多个docker容器。在每个容器上运行一个进程和一个为该进程提供API的Web服务器。 我的问题是,当默认端口为80时,如何从浏览器访问API?为了能够访问docker容器内的Web服务器,请执行以下操作: 这样,我可以在计算机终端上执行以下操作: 但是如何使用多个容器和多个Web服务器来处理呢? 问题答案: 您可以公开多个端口,例如 或在您的API容器前面放置一个代理