F5 is upgrading its customer support chat feature on My.F5.com. Chat support will be unavailable from 6am-10am PST on 1/20/26. Refer to K000159584 for details.

Forum Discussion

DannyG_34437's avatar
Dec 20, 2013

LTM+APM Mode and Other URL links

Hi, Just used the iAPP f5.microsoft_sharepoint_2010_2013.v1.0.0rc2 to create access for my external users to access my internal SharePoint Server. Got it working after working through some minor issues and such and overall the new app seems to be working just fine.

 

Only issue remaining, our internal SharePoint server has a few links to other internal web applications running on other servers.

 

Currently, a user might connect up from the outside using: https://portal.ourcompany.com. User is presented with the SharePoint home screen. Among other things, this screen may contain the link http://app1.internalcompanydomain.com pointing to a specific application on an other server. If user hovers the mouse over the link, the real URL is shown. If user clicks on this link, user is presented with a not found message. Which makes since because my users are actually on the outside.

 

Before I switched to the iAPP, I was using standard portal mode and URL rewrite. Links to other sites worked just fine. However, due to all of the other issues I was seeing with SharePoint I had to switch to the iAPP.

 

I am wanting to know if there is an other way to get these URL links working? Perhaps some rule to rewrite the specific URLS? Or??

 

Thoughts? Thanks, Danny

 

10 Replies

  • Hi Danny,

     

    I would suggest you to have a look on ProxyPass iRule here : ProxyPass

     

    Let me know if it's ok for you, once you'll have try it.

     

    Thomas

     

    • DannyG_34437's avatar
      DannyG_34437
      Icon for Cirrus rankCirrus
      Hi Thomas, I've looked over the ProxyPass iRule. I guess I am not too clear on how this might solve my problem. Can you make suggestions on how? Thanks, Danny
  • Hi Danny,

     

    I would suggest you to have a look on ProxyPass iRule here : ProxyPass

     

    Let me know if it's ok for you, once you'll have try it.

     

    Thomas

     

    • DannyG_34437's avatar
      DannyG_34437
      Icon for Cirrus rankCirrus
      Hi Thomas, I've looked over the ProxyPass iRule. I guess I am not too clear on how this might solve my problem. Can you make suggestions on how? Thanks, Danny
  • ProxyPass is an iRule-based rewrite engine. It uses information configured in a data group to rewrite content as it passes through the proxy in both directions, and is used heavily in situations just like this, where an internal URL needs to be mapped to an external URL (and then back). There's an APM version of ProxyPass, but if you're running 11.4, you're probably better off using a rewrite profile. You would essentially map the internal URLs, the URLs that your app is exposing to the client, to external URLs - URLs that the client can connect to. You then need to expose those external URLs as VIPs so that they are accessible. For example:

    app.internalsite.local = app.example.com
    
  • Kevin, thanks for the post.

     

    If I understand this correctly, my users are currently connecting from the outside to a sharepoint server using https://portal.somecompany.com and one of the links on that site I am interested in is called http://app1.insideservers.com.

     

    I then need to created a rewrite profile to map the inside URL http://app1.insideservers.com to outside URL https://portal.somecompany.com. I already have a VIP for the https://portal.somecompany.com.

     

    Does that sound correct? Or, are you saying that I need a totally separate external URL and VIP than the one I am currently using for sharepoint access?

     

    Thanks, Danny

     

  • Your best bet I believe is to remap the internal app to a separate external name (ex. app1.somecompany.com), and either create a separate VIP (with the same rewrite profile), or configure external DNS to point it to the same host and use a host-based routing iRule.

     

  • This is fairly new to me so I don't completely understand have to proceed. However, I have a lab VE environment and can play all I want 🙂 So far, I have written the following rule:

     Replace http://otherinternalserver/ with https://portal-dev.outsideserver.com/ in response content
     Prevents server compression in responses
    when HTTP_REQUEST {
    
        Disable the stream filter for all requests
       STREAM::disable
    
        LTM does not uncompress response content, so if the server has compression enabled
        and it cannot be disabled on the server, we can prevent the server from 
        sending a compressed response by removing the compression offerings from the client
       HTTP::header remove "Accept-Encoding"
    }
    when HTTP_RESPONSE {
    
        Check if response type is text
       if {[HTTP::header value Content-Type] contains "text"}{
    
           Replace http://otherinternalserver/ with http://portal-dev.outsideserver.com/
          STREAM::expression {@http://otherinternalserver/@http://portal-dev.outsideserver.com/@}
    
           Enable the stream filter for this response only
          STREAM::enable
       }
    }
    

    When an outside user connects to https://portal-dev.outsideserver.com/, they see the internal server as before the rule was implemented. Now however, when they hover over the other internal server link on the page, their link displays the "https://portal-dev.outsideserver.com/" as I would expect. But basically the link does not work and responds with a 404 page not found.

    Kevin, is this the correct approach? I think I understand why I need to have a different outside VS for the link, just wanted to make sure I'm going down the correct path..

    Thanks, dg

    • DannyG_34437's avatar
      DannyG_34437
      Icon for Cirrus rankCirrus
      Just to clarify, "I have written the following rule:" is more like a copy/paste and modify from DEVCent... :)
  • Can you add that to your iRule to log requests matched by your LTM plz.

    when STREAM_MATCHED {
        log local0. "Request matched: [STREAM::match]" 
    }
    

    And last question, on which version is your BIG-IP ?