首页 文章

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

提问于
浏览
0

我们正在尝试使用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;
       }
    }

    }

每当我们在“location”参数中设置“/”以外的任何内容时,它返回一个nginx 404,错误日志显示:“/ var / opt / csw / nginx // RES_NOT_FOUND”

1 回答

  • 0

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

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

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

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

相关问题