我不知道该怎么办了。
我有一个nginx 服务器设置将请求传递到同一台机器上的端口,apache2 服务器正在听(是的,这是必要的)。
我这样做是使用
location /
{
proxy_pass http://127.0.0.1:1000;
}
在 nginx 中。
对于包含纯文本的简单 HTML 文件,此方法运行良好。现在我想设置 Wordpress,发现缺少 CSS。那是因为我的浏览器尝试从http://127.0.0.1/somefilehere.css
而不是获取 CSS 文件(和其他文件) http://example.com/somefilehere.css
。显然这不是我想要的,但我不知道如何修复它。我也不知道该提供什么进一步的信息,所以请随时提问。
更新:
为了具体说明问题,HTML 中的所有引用都指向本地主机(客户端计算机),当然,其中没有 css 和其他内容。
感谢,并有一个愉快的一天!
答案1
我认为您可以通过将其添加到您的位置块来完成:
proxy_set_header Host $host;
这样,您的 Apache 服务器就知道用户正在访问什么网站。
顺便说一句,如果可能的话,让 Nginx 提供静态文件。这是 Nginx 擅长的,也是 Apache 不擅长的。为css
、jpg
、png
等创建单独的位置块。网络上有许多示例。
答案2
失败的原因可能不在于nginx
,而在于Apache
无法识别127.0.0.1
URL 的有效主机部分。
一个简单的测试就可以排除这种情况:从同一台机器,尝试直接从 Apache 服务器访问该 CSS 文件:
curl http://127.0.0.1:1000/somefilehere.css
如果返回文件且没有错误,您可能需要发布来自 nginx 的访问和错误日志(如果尚不可用,请启用它们)。参考:https://www.nginx.com/resources/admin-guide/logging-and-monitoring/
如果您收到错误curl
,您应该检查 Apache 正在监听哪些 IP 地址(应该是 0.0.0.0、端口 1000,而不是留下环回接口的特定 IP 或网络)。
另外,检查 Apache 配置文件中的服务器名称和虚拟主机指令是否包含 127.0.0.1(或 localhost)作为服务域。
希望能帮助到你!