Nginx反向代理到不同的服务器

时间:2016-03-29 07:25:56

标签: redirect nginx proxy

我们正在尝试使用nginx设置反向代理,以便从DMZ网络服务器将流量重定向到内部网络。

流量进入443,遇到apache页面用户登录ldap服务器,然后我们将流量从apache重定向到nginx(正在监听8089)。然后Nginx将该流量代理回内部网络。

apache重定向有效,至少有一些nginx代理正在运行。加载内部服务器上的页面,但页面上的所有资源都是双重附加URL。例如:

https://webserver.us.com == redirects ==> http://webserver.us.com:8089 == Nginx Proxy ==> http://internal.server.com:8080 / page

http://internal.server.com/page加载,但页面上的所有资源都尝试加载为:

http://internal.server.com/page/page/resource。

直接点击内部页面时,它们当然是http://internal.server.com:8080/page/resource

我确信我们在设置proxy_pass,proxy_redirect和root / location时出错,但我无法弄明白......

我们的Nginx.conf如下:(仅供参考,这是一个solaris服务器)

worker_processes  1;
pid        /var/run/nginx.pid;

    events {
        worker_connections  1024;
    }


    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;      
        keepalive_timeout  65;




    server {
        listen       8089;
        server_name  <internal.server.com>;

        access_log  /var/opt/csw/nginx/logs/access.log;
        error_log  /var/opt/csw/nginx/logs/error.log;
        root   http://<internal.server.com>:8080;
        index  index.html index.htm;

        location  / {
         proxy_pass  http://<internal.server.com>:8080/<page>/;
         proxy_redirect http://<internal.server.com>:8080/<page> http://<internal.server.com>:8080/<page>;
         proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
         proxy_buffering off;
         proxy_set_header        Host            $host;
         proxy_set_header        X-Real-IP       $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
       }
    }

    }

每当我们在&#34;位置&#34; &#34; /&#34;以外的参数;它返回一个nginx 404,错误日志显示: &#34;在/ var /选择/ CSW / nginx的// RES_NOT_FOUND&#34;

1 个答案:

答案 0 :(得分:0)

客户端请求webserver.us.com/通过反向代理转换为internal.server.com:8080/page/

该文档指定/page/resource之类的资源URI,因此客户端将这些请求webserver.us.com/page/resource通过反向代理转换为internal.server.com:8080/page/page/resource

最简单的解决方案是使反向代理透明。您可以添加完全匹配的位置,以便将/映射到您应用的入口点:

location = / {
    rewrite ^ /page/ last;
}