更新
我认为可以将其缩小到以下几点:
出于某种原因,当 Nginx 尝试确定是否代理请求时,主机名对 Nginx 很重要。如果将主机名设置为,则git.example.com
请求似乎无法通过,但如果设置为203.0.113.2
,则请求会通过。为什么主机名很重要?
原始问题
当我直接在浏览器栏中输入反向代理的 IP 地址时,它会执行重定向。
在这种情况下,我将输入203.0.113.2
并执行重定向到203.0.113.1
。
/etc/hosts
当使用通过条目解析的 URL 时,203.0.113.2 git.example.com
将显示“欢迎使用 Ngnix 页面”,而不是重定向产生的页面。
IIUC 浏览器将首先203.0.113.2
根据 URL 条目解析 IP 地址git.example.com
,因此两者都应该导致调用代理配置,但事实并非如此。
这是配置:
server {
listen 80;
server_name git.example.com;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://203.0.113.1:3000;
}
}
有趣的是,我可以导航到例如:
http://203.0.113.2/issues
如果我随后进行更改203.0.113.2
,git.example.com
则会得到 Nginxs“404 未找到”页面。
答案1
我昨天花了几个小时摆弄 nginx 和 gogs 配置,但没有成功。
实际工作是在域名的 DNS 配置上设置 A 记录,以便git
子域名指向正确的 IP 地址。