rui*_*991 2 proxy redirect reverse-proxy nginx
我是 Nginx 的新手,我的目标是什么?
当我访问127.0.0.1:8080/proxy/git/or 时Https://127.0.0.1/proxy/git/,Nginx(反向)代理可以访问https://github.com
我的 nginx conf 很糟糕:
http {
server {
listen 8080 default backlog=2048;
listen 443 ssl;
server_name 127.0.0.1;
ssl_certificate /etc/nginx/xxxxxxx.crt;
ssl_certificate_key /etc/nginx/xxxxxxx.key;
location /proxy/git/ {
proxy_pass https://github.com/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Server;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
}
error_page 500 502 503 504 /50x.html;
}
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
Run Code Online (Sandbox Code Playgroud)
当我进入 或 在我的 chrome 地址栏中,我得到了一个 301 重定向,地址变成了 ,我认为它变成了直接访问,但我想要代理访问,这是一张图片:
但是,当我重定向到 http&static 网站时,就可以了。
我在网站上搜索了很多,有人说是因为proxy_redirect,我测试了它proxy_redirect / /;或删除它,并将其更改proxy_set_header Host $host;为proxy_set_header Host $http_host;但都没有意义。
特别是,如果我同时删除该proxy_redirect行并更改$host为$http_hosts,如下所示:
proxy_pass https://github.com/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Server;
#proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
Run Code Online (Sandbox Code Playgroud)
似乎它会做 301 我和我自己???
所以,我的问题是:
谁能告诉我如何在 127.0.0.1 下反向代理到 github?(想象一下我在一个必须使用这种反向代理的地方)
如果你能用简单的话来解释我们为什么要这样做,我也很想知道原因。
我的英文很差,所以为了说清楚,我们可以将github称为“目标服务器”或“目标网站”,将127.0.0.1称为“代理服务器”或“nginx”吗?
真诚地感谢任何想帮助我的人!
我找到了原因。
Github 需要 Https 和 HOST:github.com
在proxy_set_header Host $http_host;不能帮助你改变这个主机头,应使用proxy_set_header Host $proxy_host;来代替。这会将主机头更改为 github。