nginx proxy to confluence doesn?t work
Asked by robinPVS buhrPVS:

Hi,

I?ve setup a external server (freeBSD) and installed nginx there to proxy all traffic for confluence.domain.tld to atlassian.domain.tld:8090/confluence. And this doensn?t work :(

Context-path is setup according to this how-to:  
<https://confluence.atlassian.com/confkb/how-to-change-the-confluence-context-path-707985922.html>

And that works great :)

Now nginx comes into play. I configured ist like this:

<https://confluence.atlassian.com/confkb/how-to-use-nginx-to-proxy-requests-for-confluence-313459790.html>

But nginx passes nothing to the given address. All that I receive is the hello-Page from nginx.

This is the config i used:

```
server {
 listen 80;
 server_name confluence.domain.tld
 client_max_body 100m;

location / {
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-Server $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_pass http://atlassian.domain.tld:8090/confluence;
```

DNS Record are working. Any ideas?


Answers:
author: robinPVS buhrPVS
body: add the context path makes no difference in how the requested site behaves in the browser :(

comments: author: AnnWorley
body: A colleague with more nginx experience suggests that you try with one server block:

```
http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048;include mime.types; default_type application/octet-stream;access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log;server { listen 80; server_name confluence.domain.de client_max_body 100m;location /confluence { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://atlassian.domain.de:8090/confluence; }location /synchrony { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://atlassian.domain:8091/synchrony; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } }}
```

Another colleague suggested we check the proxy logs as they may give us a better hint.

I look forward to hearing how it works with one server block as well as anything you find in the nginx logs.


author: robinPVS buhrPVS
body: OK, I understand Synchrony and its context path - thanks.

Here is my nginx.conf that should proxy "confluence.domain.de" to "atlassian.domain.de:8090/confluence"

```
worker_processes 4;
pid /var/run/nginx.pid;


events {
 worker_connections 768;
 }


http {
 sendfile on;
 tcp_nopush on;
 tcp_nodelay on;
 keepalive_timeout 65;
 types_hash_max_size 2048;

include mime.types;
 default_type application/octet-stream;

access_log /var/log/nginx/access.log;
 error_log /var/log/nginx/error.log;

server {
 listen webproxy.domain.de:80;
 server_name webproxy.domain.de;

root /usr/local/www/nginx;
 index index.html index.htm;

location / {
 try_files $uri &uri/ /index.html;
 }
 }



server {
 listen 80;
 server_name confluence.domain.de
 client_max_body 100m;

location /confluence {
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-Server $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_pass http://atlassian.domain.de:8090;
 }

location /synchrony {
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-Server $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_pass http://atlassian.domain:8091/synchrony;
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "Upgrade";
 }
 }
}
```

DNS-Records for both, the origin and target adress are set and can be resolved by the machine that runs nginx

comments: author: AnnWorley
body: I am not an nginx expert but I did see something that may be an issue. The example config uses the context path on the proxy_pass parameter, where yours doesn't:

Example:

```
 proxy_pass http://localhost:8090/confluence;
```

Your config:

```
proxy_pass http://atlassian.domain.de:8090;?
```

Please try with the context path on the proxy_pass line and let me know what happens.


author: robinPVS buhrPVS
body: Hi Ann,

thanks for your reply. I can?t find any detailed instructions for setting up synchrony's contextpath.

In the Guide I can find the following statement:

> *For Confluence 6.0 or later we also need to include Synchrony, the service that powers collaborative editing, which listens on port **8091** with the context path **/synchrony**.*

But where do I configure synchrony? Where is the installation Path of it?

comments: author: robinPVS buhrPVS
body: And the nginx proxy_pass still doesn?t work. All I get with the sub.domain.tld ist welcome Page from nginx.

:(


author: AnnWorley
body: I am sorry to hear that the proxy isn't directing requests as expected.

Synchrony already has the context path /synchrony and port 8091. It is installed with Confluence 6.x or during an upgrade to 6.x or higher.

Please post your new nginx config, in case I can spot something that would explain the issue.


author: AnnWorley
body: If you set up the context path ***/confluence*** the location in NGINX needs to be ***location /confluence.***

If you are using 6.x or above you will need a proxy location directive for Synchrony as well, to support collaborative editing. Here is the example from the guide you linked, please compare to your configuration to find any discrepancies: [How to use NGINX to proxy requests for Confluence](https://confluence.atlassian.com/confkb/how-to-use-nginx-to-proxy-requests-for-confluence-313459790.html)

```
server {
 listen www.example.com:80;
 server_name www.example.com;
 location /confluence {
 client_max_body_size 100m;
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-Server $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
 proxy_pass http://localhost:8090/confluence;
 }
 location /synchrony {
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-Server $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_pass http://localhost:8091/synchrony;
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "Upgrade";
 }
```


Tags: nginx