nginx 可以代理自己的github吗, 怎么做
发布于 5 年前 作者 afacode 3396 次浏览 来自 问答

image.png afacode.top 现在只能访问首页, 在跳转别的就不信了 https://github.com/afacodeafacode?tab=repositories

10 回复

因为你的server_name设置的是www.afacode.top,afacode.top当然访问不了。。。你需要把afacode.top也加到server_name中

@crazymad-tools 看都没看就回答

Nginx不是太熟,但你这样用好像不行。 你想实现的效果是访问afacode.top但是实际出来的页面是你的github内容是吧 试试redirect或者rewrite,不过这个好像是域名也变了,相当于跳转。 要不域名解析里cname到你github地址看行不行?

@afacode 没看的话,我怎么会知道你没有把afacode.top加到 servername 中?手动滑稽

@im-here 好的, 我试试

前端一枚:这里面涉及的不只是nginx知识,还有一些前端问题! 如图,楼主将自己的域名代理到github.com下自己的目录下 image.png 1⃣️github.com网站的跳转多是根据根目录,即直接在github.com域名后拼接地址,而楼主域名直接指定了下级目录 导致进入其他页面地址拼接错误跳转都失败 推导:afacode.top 代理到 github.com/afcode 通过页面链接跳转到 github.com/afacode/tes 拼接的地址是 afacode.top/afacode/test 替换回github.com就变成了github.com/afacode/afacode/test 明显多了一级目录 所以达不到跳转要求 代理本身是成功的 这点可以通过页面显示结果为github 404得到验证

2⃣️所代理的页面不能涉及登录拦截 一旦涉及登录问题 那么提交到github服务器的登录信息由于来源问题肯定会报错,这也是需要注意的点

综上:建议采纳@im-here 同学的方法 直接重定向 将页面控制权完全交还给github服务器 或者:afacode.top 代理到 github.com 自动补全目录地址 —— 此方法不适用于登录验证

location = / {
   rewrite ^(.*) http://$host/afacode permanent;
}
location / {
   proxy_pass https://github.com;
}

如有更好的方法请同步 相互学习!

这个应该是302而不是直接代理过去

改为 location /afacode { proxy_pass https://github.com/afacode/; } 是可以的,是path的问题。可以通过openresty修改path处理吧。在path前自动加afacode。

还是不行github页面里用的路径是相对于跟路径的 ,如: /afacode/… 手动把/afacode/替换成/ 访问就可以了。看来要在nginx中使用subs_filter 模块,批量替换了 subs_filter ‘/afacode/’ ‘/’;

感谢大家, 我在学学nginx 在处理

回到顶部