nginx 代理:将端口 8080 转发到 80 有效,但此后在 webapp 中生成的链接不起作用

nginx 代理:将端口 8080 转发到 80 有效,但此后在 webapp 中生成的链接不起作用

我正在尝试设置一个非常简单的事情:

使用 Nginx 监听 8080 端口,并将所有内容转发到 80 端口的内部主机。这是我目前的配置:

server {
    listen 8080;
    server_name publichost;

    location / {
        proxy_set_header   Host $http_host;
        proxy_pass http://app1;
    }
}
server {
    listen 80;
    server_name publichost;

    location / {
        proxy_set_header   Host $http_host;
        proxy_pass http://app2;
    }
}

到目前为止一切顺利。现在当我打开http://公共主机:8080它运行正常并且浏览器显示index.html网站。

但是现在,此 index.html 中的每个资源链接都尝试从中加载文件应用2

<link rel="stylesheet" type="text/css" href="http://publichost/static/styles.css">

这是完全合理的,因为代理将每个带有端口 8080 的请求转发到我的 app1 并使用内部端口 80,而每个带有端口 80 的请求都会转发到 app2。

我的问题是:如何配置 nginx 代理,使其正常工作?我希望能够有另一个可通过默认端口 80 访问的 Web 应用程序。

注意 也许需要注意的是,应用程序是 magento2,它将其 baseurl 存储在数据库中。所以我必须正确设置一次,并且不应该更改它。然后,Magento 使用该基本 url 生成 css、javascript 和图像等资源的 url。

答案1

这可能依赖于应用程序。

有时应用程序会响应标头(例如,Django 等框架的“x-script-name”)或具有重写 URL 的自定义机制(例如,Plone 的 VirtualHostMonster)。有时它们只是在应用程序中有一个设置。

相关内容