假设我在ip 111.111.111.111上有一台服务器 在哪个nginx服务器上安装为Web服务器
如果有人访问,我想要 http://111.111.111.111/new
他们应该看到的内容 http://example.github.io/new
有人告诉我可以通过NGINX反向代理或Apache反向代理
配置 sites-enabled / default 的技巧适用于不同端口的本地托管网站,但不适用于外部网站。
我为此做了什么(在服务器111.111.111.111上): 在 / etc / nginx / sites-enabled / default
中server {
listen 80;
location /new/ {
proxy_pass http://example.github.io/new;
proxy_redirect default;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol $scheme;
}
}
我得到了什么: 404
这里没有GitHub Pages网站。
答案 0 :(得分:0)
GitHub Pages允许存储库所有者将域与该存储库相关联,并通过确保域的A / CNAME记录指向GitHub进行验证。
如果您将整个域指向该GitHub页面,则不需要反向代理,因为A记录将准确地将您的域指向GitHub Pages。
您的配置旨在仅反向代理您域的目录,而不是整个域。但是,您正在设置主机标头以匹配客户端要求的主机标头。结果,GitHub Pages正在检查该存储库是否配置为以111.111.111.111接收流量,但不是。这就是为什么会收到404错误的原因-没有与该存储库和主机组合匹配的GitHub Pages配置。
将proxy_set_header中的Host标头更改为example.github.io,这样,即使客户端请求了111.111.111.111,GitHub也将请求作为example.github.io接收到。