Nginx returns HTTP Status 200 instead 302 on a proxy_pass configuration

时间:2016-05-11 11:32:10

标签: nginx docker reverse-proxy

I have the following configuration on a NGINX which is serving as a reverse proxy to my Docker machine located at: 192.168.99.100:3150.

Basically, I need to hit: http://localhost:8150 and the content displayed has to be the content from inside the Docker.

The configuration bellow is doing his job.

The point here is that when hitting the localhost:8150 I'm getting http status code 302, and I would like to get the http status code 200.

Does anyone know if it's possible to be done on Nginx or any other way to do that?

  server {
      listen 8150;

      location / {
          proxy_pass         http://192.168.99.100:3150;
      }
  }

Response from a request to http://localhost:8150/products

HTTP Requests
-------------

GET /projects                  302 Found

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

看起来简单的proxy_pass在使用ngrok时效果不错。

我正在使用带有上游的proxy_pass,它工作正常。

Bellow my configuration。

worker_processes  1;

events {
    worker_connections  1024;
}


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

    sendfile        on;
    keepalive_timeout  65;


    upstream rorweb {
      server                    192.168.99.100:3150 fail_timeout=0;
    }

    server {
      listen                    8150;
      server_name               git.example.com;
      server_tokens             off;
      root                      /dev/null;

      client_max_body_size      20m;

      location / {
        proxy_read_timeout      300;
        proxy_connect_timeout   300;
        proxy_redirect          off;

        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_set_header        Host              $http_host;
        proxy_set_header        X-Real-IP         $remote_addr;
        proxy_set_header        X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header        X-Frame-Options   SAMEORIGIN;

        proxy_pass              http://rorweb;
      }
    }

    include servers/*;
}

我的环境是这样的:

  • Docker(在端口3150上运行rails项目)
  • Nginx(作为暴露端口8150的反向代理)
  • Ngrok(导出我的localhost / nginx)