Configuring outgoing web proxy support for Fisheye or Crucible
Accessing external hosts
Fisheye may need to connect to hosts that are outside your network. For example, in Administration > Server Settings > Update Notifications, Fisheye needs to access an external server to check for updates. If the Fisheye server can't access the site it will throw the following error:
ERROR - Error while checking for newer versions from http://update.atlassian.com (update.atlassian.com)
When trying to check if there are newer versions of Fisheye or Crucible
In some environments, access to hosts outside the network are forbidden (in which case, you will need to manually check for updates). In other environments access to hosts outside of the network need to go through a proxy.
If you do have a proxy server, you need to tell Fisheye how to send its requests through the proxy.
Configuring an outbound HTTP proxy in Fisheye
Proxy support is configured by passing certain arguments to the Java Virtual Machine on startup (for Fisheye, you can add them to the FISHEYE_OPTS Environment Variables). These properties follow the conventions defined by Sun:
- http.proxyHost
- http.proxyPort (default: 80)
- http.nonProxyHosts (default: <none>)
- https.proxyHost
- https.proxyPort
At a minimum, you need to define http.proxyHost
to configure an HTTP proxy, and https.proxyHost
for an HTTPS proxy. System property configuration is described on the JVM system properties page.
Properties http.proxyHost
and http.proxyPort
indicate the proxy server and port that the HTTP protocol handler will use.
-Dhttp.proxyHost=proxy.example.org -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example.org -Dhttps.proxyPort=8080
Property http.nonProxyHosts
indicates the hosts which should be connected to directly and not through the proxy server. The value can be a list of hosts, each separated by a |, and in addition a wildcard character (*) can be used for matching. For example:
-Dhttp.nonProxyHosts=*.foo.com|localhost
Note: You may need to escape the pipe character (|) in some command-line environments.
If the http.nonProxyHosts
property is not configured, all web requests will be sent to the proxy.
Configuring HTTP proxy authentication
Proxy authentication is also configured by providing system properties to Java in your application server's configuration file. Specifically, the following properties:
- http.proxyUser – username
- http.proxyPassword – secret
- https.proxyUser
- https.proxyPassword
How it looks
So, an example of your FISHEYE_OPTS Environment Variables will be:
FISHEYE_OPTS="-Xms128m -Xmx1024m -XX:MaxPermSize=128m -Dhttp.proxyHost=proxy.example.org -Dhttp.proxyPort=8080 -Dhttp.nonProxyHosts=*.foo.com|localhost -Dhttp.proxyUser=USERNAME -Dhttp.proxyPassword=SECRET -Dhttps.proxyHost=proxy.example.org -Dhttps.proxyPort=8080 -Dhttps.proxyUser=USERNAME -Dhttps.proxyPassword=SECRET"
After having set the FISHEYE_OPTS and restarting your server, go to Administration > Sys Info/Support > System Info, and check your JVM Input Arguments to ensure that your server is picking up your FISHEYE_OPTS as expected.