Hello, everyone!

I am using Apache as a load balancer, and have an issue with requests returning 
a 404 status code, unless they match a ProxyPass directive with a source value 
of "/". Can you help me identify the reason for this?

My load balancer configuration bits (just let me know if I should also send in 
the rest):

> RequestHeaderset X-Forwarded-Proto https
>
> SSLProxyEngineOn
> SSLProxyVerifyNone
> SSLProxyCheckPeerCN Off
> SSLProxyCheckPeerName Off
> SSLProxyCheckPeerExpire Off
>
> # IMPORTANT: Never remove ProxyRequests, and never set it to 'on'!
> ProxyPreserveHostOn
> ProxyRequestsoff
> ProxyViaOff
>
> # Load balancer configuration
> ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
> ProxyHCExpr gdown {%{REQUEST_STATUS} =~ /^[5]/}
>
> <Proxy balancer://static>
> BalancerMember http://127.0.0.1:8080
> ProxySet lbmethod=byrequests
> </Proxy>
>
> <Proxy balancer://dynamic>
> BalancerMember http://127.0.0.1:8080
> ProxySet lbmethod=byrequests
> </Proxy>
>
> ProxyPass/assets balancer://static/
> ProxyPassReverse/assets balancer://static/
>
> ProxyPass / balancer://dynamic/
> ProxyPassReverse / balancer://dynamic/

I've set the BalancerMember value for the "static" balancer to the same as the 
"dynamic" balancer not just for testing -- to eliminate my static asset cache 
server (Varnish) as a potential cause of this problem.

Another Apache virtual host is listening on 8080, which points to a Rails 
application running on Puma, served via a Unix socket. This is a staging 
server, the application servers in production will be on separate machines from 
the load balancers.

Any requests to this load balancer that start with '/assets' return 404 not 
found. If I comment out the ProxyPass and ProxyPassReverse lines for the 
'/assets' URI, meaning all requests go to the same balancer ("dynamic"), then 
everything works great -- no 404s.

I have carefully reviewed the documentation at 
http://httpd.apache.org/docs/current/mod/mod_proxy_balancer.html several times, 
checked Apache's logs with debug verbosity, searched countless forums, mailing 
lists, blog posts, and the web in general for any indication of what I might 
have wrong here, and I still can't find the issue. That's strange to me, 
because I have seen several configuration examples online, where traffic from 
something other than "/" is sent to a given balancer member via ProxyPass, and 
I can't see anything significantly different between those (presumably properly 
working) configurations and my own. :|

More information on my set-up:
Apache 2.4.37-39.0.1
OS: Enterprise Linux 8.4 (RHEL / Oracle / CentOS, etc)
Application: Custom Ruby on Rails application, running in Ruby 2.7, Rails 3.2, 
and Puma 5.4.0.
System is a virtual machine with two vCPUs and 4 GB RAM.

If I've missed any key information in my query, or if it would be helpful to 
have more information about the environment or problem, please tell me. :)

Thank you for any help you may be able to provide!!

Best,
Michela

Reply via email to