首页天道酬勤nginx反向代理有时候跨域,域名url转发

nginx反向代理有时候跨域,域名url转发

张世龙 05-12 17:10 80次浏览

前言

WEB开发经常处理跨域请求。 有许多解决域间问题的方法,例如window.name、iframe、JSONP和CORS,但不详细展开。 协议和端口不同的域之间的请求方式是采用代理。 在此,我们将重点介绍Nginx代理的方式。

场景

可以访问前端页面的端口为3000,可以通过http://127.0.0.1:3000访问前端页面。 一些页面还请求http://127.0.0.1:3000/API/getlist的Ajax。 一般来说

该后端服务的接口存储在其他服务器上,例如在公司网络中可以通过http://172.30.1.1233608081/API/getlist访问测试环境中的服务接口

因为在这种情况下的请求涉及端口不同的域之间,所以它能够利用Nginx代理请求。

Nginx代理配置参考

首先找到Nginx配置文件。

Windows下的路径是您安装和查找Nginx目录,例如我的放在c驱动器的根目录中,它是c:\nginx\conf\nginx.conf

Mac系统配置文件的路径为:/usr/local/etc/nginx/nginx.conf,在Finder下输入Shift Command G,/usr/local/etc/nginx/

将以下配置添加到Nginx配置文件中:

服务器{

listen 80

服务器_ name 127.0.0.1;

位置/{

proxy _ pass http://127.0.0.1:3000;

}

位置~/API/{

proxy _ pass http://172.30.1.12:8081;

}

}

上述结构可以理解为:

监听80个端口,并将http://127.0.0.1上的所有请求服务转发到127.0.0.1端口3000。

将http://127.0.0.1/api/或http://127.0.0.1/api/getList请求转发到http://172.30.1.123:8081

完成

通过上述配置,您可以直接从http://127.0.0.1访问我们的web APP应用程序。 如果采用IP访问,相关的API请求也会根据我们的Nginx配置提出相应的请求。 在浏览器端看到的/api/getList请求是127.0.0.1端口为80个端口,但实际上该请求已经存在

优化:

的基本代理功能可以按上述方式轻松配置。

但是,如果需要获得实际IP的业务,还需要添加实际IP配置,如下所示:

服务器{

listen 80

服务器_ name 127.0.0.1;

位置/{

proxy _ pass http://127.0.0.1:3000;

proxy _ set _ header host $ host :80;

proxy _ set _ headerx-real-IP $ remote _ addr;

proxy _ set _ headerx-forwarded-for $ proxy _ add _ x _ forwarded _ for;

}

位置~/API/{

proxy _ pass http://172.30.1.12:8081;

proxy _ set _ header host $ host :80;

proxy _ set _ headerx-real-IP $ remote _ addr;

proxy _ set _ headerx-forwarded-for $ proxy _ add _ x _ forwarded _ for;

}

}

proxy_set_header配置是更改HTTP的请求标头,Host是请求的主机名,X-Real-IP是请求的实际IP,X-Forwarded-For是

因为我们的Nginx在这里属于代理服务器,所以在proxy_set_header中设置这些信息的目的是让服务端获取实际的请求头。

友情提示:

Nginx各组成句后必须加分; 否则会报配置错误,自己还很无知。

展开

绑定主机

如果输入IP访问后感觉不舒服,可以自己修改主机。 建议主机修改神器: SwitchHosts。

主机修复参考:

127.0.0.1 www.domain.com #更改为所需的域名

如果绑定了主机,则当然可以在Nginx配置中直接配置指定的域名,如下所示:

服务器{

listen 80

server_name www.domain.com; #现在将IP更改为你的域名

# .

}

修改主机后,可以直接通过域名访问。 例如,http://www.domain.com

关于位置

在上面的配置中,您可能会对localtion后面的配置感到怀疑,但localtion后面的一般需求如下:

位置/{

#所有请求都符合以下规则

#由于所有地址都以/开头,因此此规则与所有请求匹配

# xxx你的配置写在这里

}

位置=/{

#正确匹配/,后面有字符串的地址不匹配

}

位置/API {

#匹配任何/api的第一个URL。 包括/api后面的任何URL,例如/api/getList

#匹配一致后,继续搜索

#只有在以下正则表达式不匹配时,这一个才采用这一个

}

位置~/API/ABC {

#与任意/api/abc开头的URL匹配。 包括/api/abc之后的任何URL,例如/api/abc/getList

#匹配一致后,继续搜索

#只有在以下正则表达式不匹配时,这一个才采用这一个

}

/如果通用匹配且没有其他匹配项,则任何请求都与匹配

=开头表示正确一致

如果a只符合根目录的最后一个请求,则不能在后面有字符串。

以^~开头表示uri以正规字符串开头,不是正规匹配

~开头表示区分大小写的正规一致;

~*开头表示不区分大小写的正规匹配

有关详细的localtion正规匹配规则,请参阅nginx配置location总结和如何编写rewrite规则

后记

笔者也是Nginx的初级用户。 我们希望以通俗易懂的方式记录这些知识,分享给有需要的人,一起钻研学习。 如果有错误的话,欢迎您的指正。 谢谢你。

总结

以上是这篇文章的所有内容。 希望这篇文章的内容对大家的学习和工作有一定的参考学习价值。 谢谢您的支持。

本文的标题:通过Nginx代理传输配置实现域间方法(API代理传输)。

本文地址:3358 www.CPP cns.com/jiqiao/fuwu qi/286808.html

nginx百万转发需要什么配置,路由传参的两种方式 java重定向和转发的区别,tomcat 代理转发