Nginx virtual server only partially working with Java application
- by MFB
Final Cut Server is a Java application (made by Apple) which launches from a web page. I have Nginx in front of this web server (amongst others) and, whilst the web server can be browsed externally, the Java app fails to launch correctly and throws the errors below. Can anyone offer clues as to what additional config I many have to add to Nginx to get this working?
My existing Nginx config:
user xxxx;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/conf/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
server {
server_name _;
return 444;
}
upstream fcs-site {
server 10.10.5.20:8080;
}
server {
listen 80;
server_name example.com 10.10.5.90;
access_log /var/log/nginx/fcs_access.log;
error_log /var/log/nginx/fcs_error.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 60s;
proxy_send_timeout 90s;
proxy_read_timeout 90s;
proxy_buffering off;
proxy_temp_file_write_size 64k;
proxy_pass http://fcs-site;
proxy_redirect off;
}
}
upstream myapp-site {
server 127.0.0.1:6543;
}
server {
listen 80;
server_name otherexample.com www.otherexample.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/otherapp.crt;
ssl_certificate_key /etc/ssl/otherapp.key;
server_name otherexample.com www.otherexample.com;
access_log /var/log/nginx/otherapp_access.log;
error_log /var/log/nginx/other_error.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 60s;
proxy_send_timeout 90s;
proxy_read_timeout 90s;
proxy_buffering off;
proxy_temp_file_write_size 64k;
proxy_pass http://myapp-site;
proxy_redirect off;
}
location /static {
root /www;
expires 30d;
add_header Cache-Control public;
access_log off;
}
}
Java errors:
com.sun.deploy.net.FailedDownloadException: Unable to load resource:
http://example.com:8080/FinalCutServer/FinalCutServer_mac.jnlp at
com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source) at
com.sun.deploy.net.DownloadEngine._downloadCacheEntry(Unknown Source)
at
com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(Unknown
Source) at
com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(Unknown
Source) at
com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.javaws.Launcher.updateFinalLaunchDesc(Unknown Source) at
com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) at
com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) at
com.sun.javaws.Launcher.launch(Unknown Source) at
com.sun.javaws.Main.launchApp(Unknown Source) at
com.sun.javaws.Main.continueInSecureThread(Unknown Source) at
com.sun.javaws.Main.access$000(Unknown Source) at
com.sun.javaws.Main$1.run(Unknown Source) at
java.lang.Thread.run(Thread.java:722)
java.net.ConnectException: Operation timed out at
java.net.PlainSocketImpl.socketConnect(Native Method) at
java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at
java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at
java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) at
java.net.Socket.connect(Socket.java:579) at
java.net.Socket.connect(Socket.java:528) at
sun.net.NetworkClient.doConnect(NetworkClient.java:180) at
sun.net.www.http.HttpClient.openServer(HttpClient.java:378) at
sun.net.www.http.HttpClient.openServer(HttpClient.java:473) at
sun.net.www.http.HttpClient.(HttpClient.java:203) at
sun.net.www.http.HttpClient.New(HttpClient.java:290) at
sun.net.www.http.HttpClient.New(HttpClient.java:306) at
sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:995)
at
sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:931)
at
sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:849)
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source) at
com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source) at
com.sun.deploy.net.BasicHttpRequest.doGetRequest(Unknown Source) at
com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source) at
com.sun.deploy.net.DownloadEngine._downloadCacheEntry(Unknown Source)
at
com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(Unknown
Source) at
com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(Unknown
Source) at
com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.javaws.Launcher.updateFinalLaunchDesc(Unknown Source) at
com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) at
com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) at
com.sun.javaws.Launcher.launch(Unknown Source) at
com.sun.javaws.Main.launchApp(Unknown Source) at
com.sun.javaws.Main.continueInSecureThread(Unknown Source) at
com.sun.javaws.Main.access$000(Unknown Source) at
com.sun.javaws.Main$1.run(Unknown Source) at
java.lang.Thread.run(Thread.java:722)