目录

问题背景

解决方式

正向代理:

 反向代理:

 通俗点儿一句话,正向与反向的区别:


问题背景

在某些单位或机构内部,访问互联网接口需要通过指定的服务器去访问,那我们就需要通过代理 ip 和 端口去访问外网域名。

示例:如何通过指定 ip 和 端口 访问 https://api.elecredit.com/  这个域名的接口呢?

解决方式

通过 nginx 代理访问。

先来了解一下 nginx 的正向代理和反向代理:

正向代理:

如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理,下面是正向代理的原理图。

由于工作环境原因,日常工作只能局限于单位的局域网,如果想要访问互联网,怎么办呢?这就需要用到正向代理。

nginx 配置代理ip访问https的域名配置_https

 反向代理:

看下面原理图,就一目了然。其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP地址。

nginx 配置代理ip访问https的域名配置_tcp/ip_02

 正向代理和反向代理的区别,一句话就是:如果我们客户端自己用,就是正向代理。如果是在服务器用,用户无感知,就是反向代理。

 接下来看看我们如何通过局域网访问外网 https 服务

nginx 配置:

server {
        listen       8088;
        server_name  172.16.2.239;
	
	location / {
		proxy_send_timeout 600;
		proxy_read_timeout 600;
		proxy_connect_timeout 600;
		proxy_redirect off;
		#proxy_set_header Host $host;
		proxy_set_header Host api.elecredit.com;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass https://api.elecredit.com:443/;
	        add_header Access-Control-Allow-Origin *;
	}
    }

这里监听 8088 端口,server_name 为本机 ip 地址;

proxy_set_header Host api.elecredit.com;

上面这一行配置的意思就是把原http 请求的header 中的host 字段也放到转发的请求里。

这样我们就配置好了,就可以通过 http://172.16.2.239:8088/  请求到互联网接口地址了。

nginx 配置代理ip访问https的域名配置_nginx_03

nginx 配置代理ip访问https的域名配置_tcp/ip_04

 通俗点儿一句话,正向与反向的区别:

正向代理的代理对象是客户端,反向代理的代理对象是服务端。代理服务器站在客户端那边就是正向代理,代理服务器站在原始服务器那边 就是反向代理。nginx通过proxy_pass可以设置代理服务。


人生苦短,拒绝内卷。我是跟着飞哥学编程,一个一心向阳,向阳而生,努力向上生长的年轻人。加油兄弟们……

致力于实际工作场景中的避坑经验分享,无套路,纯干货。

爱飞哥,没毛病,飞哥带你上高速,冲冲冲……