NGINX 错误的基本 URL

NGINX 错误的基本 URL

我在 9000 上安装了 apache,然后用 nginx 反向代理它。配置如下

upstream lb_servers {
    least_conn;
        server 127.0.0.1:9000;
        server localhost:9000;
    }

# HTTPS server
#
server {
    listen 443 ssl default deferred;
    server_name domain.name;

    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 5m;
    ssl_stapling on;
    ssl_stapling_verify on;

    root /www/;
    index index.html index.htm;

    location / {
        proxy_http_version 1.1;
       proxy_pass http://lb_servers;
   }
}

问题是 HTML 返回以下内容

<head>
<base href="http://lb_servers/" />
...
</head>

我如何将域名放在href而不是 中http://lb_servers/

PS 关于为什么先用 apache 然后又用 nginx,我已经使用 docker 迁移了一个遗留应用程序(apache 位于 docker 内部),并且准备好了 nginx ansible 脚本和 letsecrypt 设置等等。我不想再在这上面花太多时间了。

答案1

<base href...>标签由在 Apache 后面运行的应用程序生成。nginx 不会改变上游连接的输出,尽管您可以尝试使用sub_filter模块来替换内容。

最好改变上游应用程序以便它生成正确的内容。

答案2

也许你应该使用proxy_set_header指示。

proxy_pass http://lb_servers;
proxy_set_header Host $host;

默认情况下,nginx 使用的值$proxy_host标题的变量Host

相关内容