我在 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
。