我正在尝试设置一个非常简单的事情:
使用 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)。有时它们只是在应用程序中有一个设置。