Forum Discussion
Need a redirect and a stream profile
I am trying to do something that I think is pretty simple. Strangely enough I have what I'm trying to do working just fine on one F5, but the behavior isn't replicating when I move it to another F5. I suspect it has something to do with sequencing.
This is what I need to do.
I have two Virtual Servers. Both are listening on 443.
Virtual Server 1 has backend servers listening on port 80. Virtual Server 2 has backend servers listening on port 10108.
- My first requirement is that when users go to virtual server 1 with a blank URI that they get redirected to /gohere. I do that with an irule:
when HTTP_REQUEST {
if {[HTTP::path] eq "/"}{
HTTP::redirect https://[HTTP::host]/gohere }
}
...and that works just fine.
Now, when the user is logged into virtual server 1 they run a report that essentially provides them a link that tells is to go to virtual server 2. B/c virtual server 2 is listening (the actual servers) on 10108 it sends the URL as .
I want to take that response and change it to:
...at first I just added an empty stream profile and the irule that Kevin Steward created,
when HTTP_REQUEST {
tell server not to compress response
HTTP::header remove Accept-Encoding
disable STREAM for request flow
STREAM::disable
}
when HTTP_RESPONSE {
catch and replace redirect headers
if { [HTTP::header exists Location] } {
HTTP::header replace Location [string map {"http://" "https://"} [HTTP::header Location]]
}
only look at text data
if { [HTTP::header Content-Type] contains "text" } {
create a STREAM expression to replace any http:// with https://
STREAM::expression {@http://@https://@}
enable STREAM
STREAM::enable
}
}
and it started working just fine. However, now when I tried to build that same environment in production it's not working.
With both irules applied I get nothing.
When I remove the stream profile and the stream irule I get redirected correctly.
However when I put the stream profile back on and add the irule it breaks again.
For troubleshooting I tried to put both irules into one irule (combining them). That worked...initially, but then stopped working. I have tried to use the priority command to put a priority of 100 on the redirect irule and left the stream at default (500)...but that doesn't work either.
I feel like this should be fairly simple, I can't figure out why it works in my test environment but not in production. Any assistance would be appreciated.
1 Reply
If your iRule is working fine on one F5 Environment and it isn't working on other, then I do not see any issues with iRule. This leads me to verify the virtual server configuration and the backend server who are handling these requests. You can compare working and non-working setup with respect to vServers settings and backend server's configuration.
Please also verify if your working and non-working F5 instances are on different versions.
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com