我正在尝试在 nginx 中设置反向代理来提供静态内容。我在正确设置时遇到问题;以下是我的 nginx 配置:
server {
listen 80;
server_name mysub.domain.com;
access_log off;
resolver 8.8.8.8 valid=5s;
set $backend "www.originaldomain.com";
location / {
proxy_cache my_cache;
proxy_pass https://$backend;
}
}
如果我尝试通过 mysub.domain.com 访问 originaldomain 的资源,它将不起作用。如果我看到错误日志,则似乎 nginx 正在向 originaldomain 的 IP 请求资源,如下所示;
2018/06/09 17:47:13 [crit] 9825#0:*111 mkdir()“/store/cache/1”读取上游时失败(13:权限被拒绝),客户端:112.123.121.11,服务器:mysub.domain.com,请求:“GET /path/to/image.png HTTP/1.1”,上游:“https://101.181.11.120:443/路径/到/image.png", 主机: "mysub.domain.com"
而通过IP查找image.png时,是找不到的,要正确下载资源,需要通过域名而不是IP来查找。
有任何想法吗?
提前致谢。
答案1
nginx 只能连接到 IP 地址,这就是 TCP/IP 的工作方式。
你需要在location /
节中添加一行
proxy_set_header Host $backend;
将该标题行传递到后端。
我也会调查该mkdir() "/store/cache/1" failed (13: Permission denied)
错误。要么为缓存文件配置另一个位置,要么/store/cache
为 nginx 正在运行的 ID 创建适当的权限。