1.问题描述

1.1.功能描述

1.https://www.baidu.com/zhnx/hapi/反向代理到https://www.sina.com/hapi/

1.2.配置如下

server {
listen 443;
server_name www.baidu.com;
include proxy.conf;
access_log logs/baidu.log main;
underscores_in_headers on;

location /zhnx/hapi/ {
access_log logs/sina.log main;
proxy_pass https://www.sina.com/hapi/;
}
}


proxy.conf 文件

#############proxy config #########################
proxy_redirect 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;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 2;
proxy_send_timeout 15;
#proxy_read_timeout 60;
proxy_buffer_size 128k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;

但是无法代理成功

2.解决方案

在代理的目标服务器(www.sina.com)所属的Nginx服务器上
server_name 上需要加上 www.baidu.com

因为我们看上面proxy.conf文件中有这么一行配置
proxy_set_header Host $host;
意思是在反向代理到www.sina.com地址的时候 Host(这里大小写无所谓,传输的过程中,会编译为host),
这里的host其实就是Nginx中的server_name,

Nginx问题之反向代理无法成功_反向代理


如下✅配置

{
listen 7009;
server_name www.sina.com www.baidu.com;

location /hapi {
#其他操作
}
}