title: How to setup MongoDB behind Nginx Reverse Proxy
body: <p>I am trying to setup Nginx as a reverse proxy for accessing a MongoDB Database. By default Mongo listens to 27017 port. What I want to do, is redirect a hostname for example  mongodb.mysite.com through nginx and pass it to mongodb server. In that way from the outside network I will have my known 27017 port closed, and access my db from a hidden url like the example I gave.</p>
  <p>So I am trying to setup Nginx with this configuration :</p>
  <pre><code>server {
          listen 80;
          server_name mongo.mysite.com;
          gzip off;       
  
          location / {
              proxy_pass http://127.0.0.1:27017;
              proxy_redirect off;
              proxy_buffering off;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header Host $http_host;
              proxy_set_header X-Real-IP $remote_addr;
          }
      }
  </code></pre>
  <p>So after having this I try to connect with mongo shell from my cmd with the command <code>mongo mongo.mysite.com:80</code> and I get back the following error:</p>
  <pre><code>2015-08-06T13:44:32.670+0300 I NETWORK  recv(): message len 1347703880 is invalid. Min 16 Max: 48000000
  2015-08-06T13:44:32.670+0300 I NETWORK  DBClientCursor::init call() failed
  2015-08-06T13:44:32.674+0300 E QUERY    Error: DBClientBase::findN: transport error: mongo.therminate.com:80 ns: admin.$cmd query: { whatsmyuri: 1 }
      at connect (src/mongo/shell/mongo.js:181:14)
      at (connect):1:6 at src/mongo/shell/mongo.js:181
  exception: connect failed
  </code></pre>
  <p>Also in the Nginx access log I get this:</p>
  <pre><code>94.66.184.128 - - [06/Aug/2015:10:44:32 +0000] &quot;&lt;\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xD4\x07\x00\x00\x00\x00\x00\x00admin.$cmd\x00\x00\x00\x00\x00\x01\x00\x00\x00\x15\x00\x00\x00\x10whatsmyuri\x00\x01\x00\x00\x00\x00&quot; 400 172 &quot;-&quot; &quot;-&quot;
  </code></pre>
  <p>Has anyone got an idea, what is going wrong here? Thanks!</p>