技术解析
我想弄一个反向代理到 HTTPS 的网站,弄好之后我发现: 1.反向代理到我们学校 BBS ,( HTTP 的)就没事 2.反代到 github 百度盘这种 https 的就有问题
access.log 报 301 记录, chrome 说 too many redirect
我不会抓包,网上也没类似的解美国服务器决方案(主要是 access.log 好像只记录我到代理服务器的内容,不记录代理服务器和 github 之间的内容?)
于是我就找了别人的正确的配置文件一行一行比较,发现有个: proxy_redirect off;
设置好了之后就可以访问 github 了,但是浏览器地址栏变成github了,相当于我直接访问,不是代理的意思了(我本身就能访问 github ),
配置文件如下:
http {
server {
listen 8080 default backlog=2048;
listen 443 ssl;
server_name 127.0.0.1;
ssl_certificate /etc/nginx/xxxxx.crt;
ssl_certificate_key /etc/nginx/xxxx.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 $http_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;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
问题: 1.我成功失败的这些情况,到底是跟 301 重定向有关还是跟 http https 有关?(我了解一些 HTTP HTTPS 的内容和 HSTS )
2.为什么加了
proxy_redirect off;
就能好了?
3.所以到底如何才能在浏览器地址栏不变的情况下真正代理?
谁能简单说一下 浏览器 代理服务器 目的服务器的过程? 谢谢了!感激不尽!