This documentation relates to FishEye 2.7.x

If you are using an earlier version, please view the previous versions of the FishEye documentation and select the relevant version.
Skip to end of metadata
Go to start of metadata
Third Party Web Server Support

Please note that support for third-party web servers is provided on a best-effort basis. Please see the How to Get Legendary Support from Atlassian for more information.

FishEye has a built-in web server, but commonly runs in an environment that has its own web server. You can easily proxy through to FishEye from this primary web server, so that it appears as if FishEye is part of the primary web server.

In most situations, FishEye can determine the host and port of the primary web server automatically. This is useful when you have multiple virtual hosts proxied through to the one FishEye instance.

If it appears FishEye is having trouble automatically detecting the primary web server's host and port, you will need to set the Proxy host and Proxy port parameters. If the primary web server is running on WEBHOST:80 and FishEye is running on FEHOST:8060, then you can set FishEye's Proxy host and Proxy port parameters to WEBHOST and 80.

If the primary web server is using SSL, add the parameter proxy-scheme="https" to the connecting server as in the following example:

You will probably want FishEye to appear in a subdirectory of the primary server. In that case, you need to set FishEye's web context parameter. The rest of the page assumes you have set this value to fisheye.

You will need to restart FishEye before any of the above parameters take effect.

Then, configure your primary web server as described below.

Apache

The easiest way to proxy through to FishEye is using the ProxyPass directive, which requires the mod_proxy module. Add this section to your Apache configuration:

If you want Apache to serve FishEye's static content, then you can do something like this instead:

An alternative to using ProxyPass is to use mod_rewrite with the [P] flag.

AJP

FishEye also supports AJPv13 connectivity. For more information, please see AJPv13 Authentication.

  1. Jan 21, 2008

    Tomcat 5+

    I have a working setup that uses a reverse proxy to Fisheye from Tomcat 5+.

    Given that I did not want to spam the comments, I have posted it here:
    Proxy through to Fisheye from Tomcat5+

  2. Feb 02, 2009

    If you're proxying FishEye via Apache mod_proxy_http, you may encounter encoding issue when filename contains special characters (I do) ending up with a java.lang.IllegalArgumentException Not encoded error.

    The following Apache configuration fixes my problem:

    <Location "/fisheye">
    ProxyPass http://localhost:8090/fisheye nocanon
    ProxyPassReverse http://localhost:8090/fisheye
    </Location>

    Reference: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
    Search for the nocanon option.

    Note that may affect the security of your backend, as it removes the normal limited protection against URL-based attacks provided by the proxy.

  3. Jan 20, 2010

    Anonymous

    Maybe the example could state that the "web context" attribute should be like: context="fisheye"

  4. Nov 15, 2010

    Anonymous

    Additionally, it seems to me that the context="fisheye" parameter needs to be part of the web-server tag, not the http tag.  See below:

    <web-server context="fisheye">

        <http bind=":8060"/>

    </webserver>

  5. Nov 22, 2010

    The ideal way to integrate to Apache is using AJP.  See this comment.  This documentation page suggests you should only bother if you're doing authentication.

  6. Dec 05, 2010

    I would appreciate a walkthrough for configuring IIS6 as the proxy server. The example given for Jira is excellent and I have that working, but I've tried to set this up for Fisheye and I just get errors in the ISAPI log. I am focussed mainly on the Microsoft solution stack so I'm very comfortable with the IIS side of things but I have no knowledge of Apache or Java application servers so it's incredibly difficult for me to accomplish tasks with Atlassian products unless everything is spelt out explicitly. Here's an example of the log output:

    [Sun Dec 05 05:56:42.956 2010] [9876:7508] [info] init_jk::jk_isapi_plugin.c (2741): Jakarta/ISAPI/isapi_redirector/1.2.31 (1026297) initialized
    
    [Sun Dec 05 06:18:37.891 2010] [9876:7508] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (1283): wrong message size 8195 8192 from 127.0.0.1:8012
    
    [Sun Dec 05 06:19:10.014 2010] [9876:7508] [error] ajp_get_reply::jk_ajp_common.c (2088): (worker2) Tomcat is down or network problems. Part of the response has already been sent to the client
    
    [Sun Dec 05 06:19:10.686 2010] [9876:7508] [info] ajp_service::jk_ajp_common.c (2543): (worker2) sending request to tomcat failed (recoverable), because of protocol error (attempt=1)
    
    [Sun Dec 05 06:19:31.899 2010] [9876:7508] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (1283): wrong message size 8195 8192 from 127.0.0.1:8012
    
    [Sun Dec 05 06:20:02.007 2010] [9876:7508] [error] ajp_get_reply::jk_ajp_common.c (2088): (worker2) Tomcat is down or network problems. Part of the response has already been sent to the client
    
    [Sun Dec 05 06:20:02.116 2010] [9876:7508] [info] ajp_service::jk_ajp_common.c (2543): (worker2) sending request to tomcat failed (recoverable), because of protocol error (attempt=2)
    
    [Sun Dec 05 06:20:02.491 2010] [9876:7508] [error] ajp_service::jk_ajp_common.c (2562): (worker2) connecting to tomcat failed.
    
    [Sun Dec 05 06:20:02.647 2010] [9876:7508] [error] HttpExtensionProc::jk_isapi_plugin.c (2221): service() failed with http error 502
    

    Any ideas?

  7. Jul 20, 2011

    Once again, Atlassian's buggy instructions fail.  If you're trying to put it fisheye behind a proxy, fisheye issues urls which begin with

       http://foo.com/static/.....

    NOT
       http://foo.com/fisheye/static/...

    But, the docs don't SAY anything about how to move their urls to a subdirectory.

    I hate all atlassian software.  The installation instructions are scattered, incomplete, and buggy.  What should take 15 minutes to setup will take you a week.  On top of that, I've never seen such a memory hog.  At 600MB to run an empty installation, it's really quite prohibitive.  I can only imagine how much RAM it would use if it had any data in it.

    1. Aug 17, 2011

      Anonymous

      Mike, you should really read all the documentation available.  Setting the context of fisheye is quite simple, and documented well.

      1. Aug 18, 2011

        Mike's somewhat bitter appraisal might be over zealous but he does have a point. Those of us who run a Microsoft infrastructure are used to better. Find a knowledge base article on how to do something and it might reference other articles for information, but all the instructions you need are always right there in the one article. Also, it's clear that the Microsoft solution stack is not a priority for Atlassian and the documentation is often weak or out of date in that area. Information on proxying behind IIS is a good example of this weakness, there is no mention anywhere of how to proxy behind IIS7 using Application Request Routing, for example. The documentation refers to using an ISAPI module which is no longer the best way of doing things. Another example: setting up Fisheye to run as a Windows Service is +painful+ for a Windows admin. All that copying of files and editing .conf files. Jira has it right, creating the Windows Service is part of the setup. Why can't Atlassian replicate that technology for Fisheye?

  8. Sep 26, 2011

    I recently configured Crucible behind an nginx reverse proxy.  It was easy except for one thing:  you have to add the nginx directive "merge_slashes off" to prevent nginx from corrupting URLs when they are passed to Crucible.  Sadly this directive is not described in the English documentation for nginx.  I put something like this in the http section of the config.

    merge_slashes off;

    server {
    listen 443 ssl;
    server_name crucible.example.com;
    access_log /var/log/nginx/access.log main;

    ssl_certificate /etc/pki/tls/certs/crucible.crt;
    ssl_certificate_key /etc/pki/tls/private/crucible.key;
    ssl_ciphers HIGH:+TLSv1:+SSLv3:!MEDIUM:!LOW:!ADH:!aNULL:!eNULL:!NULL;
    ssl_prefer_server_ciphers on;
    ssl_protocols SSLv3 TLSv1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    location / {
    proxy_pass http://localhost:8060/;
    }

    }

    server {
    listen 80;
    server_name crucible.example.com;
    rewrite ^(.*) https://$server_name$1 permanent;
    }

  9. Dec 21, 2011

    I've got an Apache Reverse Proxy setup on a different machine than Fisheye/Crucible is hosted on.  Everything seems to work until I get to the Administrator section, which returns a blank page.

    My config.xml:

    <web-server site-url="http://internal.web.server:8060/crucible" context="crucible">
    <http bind=":8060"/>
    </web-server>

    My Apache Config:

    ProxyPass /crucible http://internal.web.server:8060/crucible
    ProxyPassReverse /crucible http://internal.web.server:80600/crucible

    Thanks for any input!

  10. Jan 10, 2012

    Anonymous

    Hey everyone,

    You can configure the proxy settings from within FishEye's GUI:

    Configuring the FishEye Web Server