【问题标题】:nginx reverse proxying multiple application requesting similar assetsnginx反向代理请求类似资产的多个应用程序
【发布时间】:2016-09-04 15:41:23
【问题描述】:

我有几个应用程序位于:

http://www.foo.com:80
http://www.bar.com:42
http://www.baz.com:1337

我正在尝试使用一台 nginx 机器进行反向代理。我现在遇到的问题是这些应用程序正在请求名称相同但内容不同的文件:

location /bootstrap.css {
 proxy_pass http://www.foo.com:80/bootstrap.css;
}

location /bootstrap.css {
 proxy_pass http://www.bar.com:42/bootstrap.css;
}

location /baz {
 proxy_pass http://www.baz.com:1337;
}

location /foo {
 proxy_pass http://www.foo.com:80/;
}

我是否可以重写来自特定应用程序服务器的所有响应以指向它的应用程序子文件夹?

例如:重定向

http://www.foo.com:80/* 

/foo

【问题讨论】:

    标签: nginx proxy reverse-proxy nginx-location


    【解决方案1】:

    你可以设置如下:

    location /foo {
        proxy_pass http://www.foo.com:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    

    但是,您的应用程序 foo 可能需要知道这一点。例如,请参阅此post

    编辑:

    Nginx 或许可以通过使用sub_filter from ngx_http_sub_module 来做你想做的事

    尝试以下示例:answer 1answer 2

    【讨论】:

    • 问题是 www.foo.com 发出的 html 有绝对引用说 -- /bootstrap.css,而不是 /foo/bootstrap.css 我如何从 www 获得响应。 foo.com 为 /foo/bootstrap.css 或获取 /bootstrap.css 的请求转发到 /foo/bootstrap.css
    • 我不知道 nginx 是否可以单独执行此操作。我相信这是应用程序的 foo 责任。查看post 并看到作者明确告诉配置应用程序(在本例中为 Sickrage)以了解它将从目录内部调用(在本例中为 /sickrage)。您的应用程序是否自包含或由 Apache 服务器或其他 http 服务器提供服务?我不知道是否可以在 Apache 或任何其他 http 服务器中重写响应。
    • 实际上可以如上面的编辑部分所示。希望对你有帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 2020-09-05
    • 2021-11-25
    • 2021-05-22
    • 2022-01-07
    • 2020-04-04
    • 1970-01-01
    • 2020-04-16
    相关资源
    最近更新 更多