nginx正向代理问题解决

avatar 2020年3月12日18:13:58 评论 2,355 次浏览

在做nginx正向代理的过程中,我使用的不是80端口,而且80端口目前已经正在使用。代理服务器和目标服务器都是在同一个机器上,配置以后nginx的代理服务器总是自动的跳到80端口的数据,下面是代理段的nginx配置

server {

	listen 81;
	server_name localhost;
	client_max_body_size 100M;
	proxy_next_upstream  error timeout invalid_header;
	proxy_pass_header    server;
	proxy_http_version   1.1;
	proxy_set_header     Connection "";
	proxy_set_header     Host $host;
	#proxy_set_header    X-Real-IP $remote_addr;
	proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header     Upgrade $http_upgrade;


	resolver 19.211.55.145;
	location / {
		proxy_pass http://$http_host$request_uri;

	}

}

代理服务器指向的服务端的nginx配置

server {

	listen 82;
	server_name localhost;
	client_max_body_size 100M;
	proxy_next_upstream  error timeout invalid_header;
	proxy_pass_header    server;
	proxy_http_version   1.1;
	proxy_set_header     Connection "";
	proxy_set_header     Host $host;
	#proxy_set_header    X-Real-IP $remote_addr;
	proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header     Upgrade $http_upgrade;
	location / {
		if ( $remote_addr !~* "^10\.211\.55\.145") {
			return 403;
		}
		root /apps/work/data/test/82/;
		index  index.html index.htm;
	}

}

通过配置发现,proxy_pass_header都指向了本机的host,这里修改了一下代理服务器的配置

server {

	listen 81;
	server_name localhost;
	client_max_body_size 100M;
	proxy_next_upstream  error timeout invalid_header;
	proxy_pass_header    server;
	proxy_http_version   1.1;
	proxy_set_header     Connection "";
	proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header     Upgrade $http_upgrade;


	resolver 19.211.55.145;
	location / {
		proxy_pass http://$http_host$request_uri;

	}

}

服务端访问代理不在出现跳转,这里的问题就是nginx中使用变量的问题。去掉nginx的跳转,访问没有问题。

注意:如果你遇到在同一台服务器上部署代理,代理跳转错误,那首先要检查一下代理的nginx配置是否有本地的host变量,这种变量最容易跳转到默认端口。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: