我想弄一个反向代理到 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.所以到底如何才能在浏览器地址栏不变的情况下真正代理?
谁能简单说一下 浏览器 代理服务器 目的服务器的过程? 谢谢了!感激不尽!
2
popu111 2016-09-11 12:17:37 +08:00 via Android 1
|
3
zhoulouzi 2016-09-11 14:17:39 +08:00 1
upsteam 和 set 用一个。
|
6
whx20202 OP @julyclyde 奇怪的很,我用抓包发现 http 头的 host 没有被替换,还是 127.0.0.1 ,估计这里出错了,可是我配置文件写了替换头的那句啊
|
7
Siril 2016-09-12 09:47:29 +08:00
|
9
julyclyde 2016-09-12 11:48:30 +08:00 1
proxy_set_header Host $http_host;
这个可能有问题,对方会不认的 |
10
whx20202 OP 结贴
proxy_set_header Host $http_host; 这句话把我和 nginx 通信的 HTTP 头原封不动的发给了 目的服务器 我以为这句话的意思是: Nginx 向目的服务器请求的时候替换成目的服务器的 Host ,实际没有 真正的做法是 proxy_set_header Host $proxy_host; 再次感谢帮助我的各位,也在这里存个档 |
11
liuyinltemp 2018-04-25 13:20:50 +08:00
学习一下
|