采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
有elasticsearch和django分别完成的两个服务,一个开在本机9200一个开在本机8001,但对公网只有80一个端口接受http请求。在公网用客户端时访问都是通过同一个域名服务转发到本机80端口的,servername相同,应该如何配置nginx判断在80端口监听到的请求哪一个转发到localhost:8001哪一个转发到localhost:9200呢?
后端两个服务(9200、8001)对外需要共用一个域名和端口,这个时候就常见的、也是简单的实现方式就是基于不同的location 对访问路径作匹配,然后跳转到不同的后端服务。
location /elasticsearch {
proxy_pass http://127.0.0.1:9200/;
include proxy_params;
}
location /django {
proxy_pass http://127.0.0.1:8001/;
供参考
这个location的差异是在哪里体现的呢?nginx在80端口监听到来自外界的两种服务请求都是http数据包,且来自同一domain,没有location信息
区别在于请求的路径,客户端分别请求http://www.xxx.com/elasticsearch 和 http://www.xxx.com/django,Nginx的服务端中,通过location分别匹配,并通过proxy_pass代理。
相当于公网租用的domain将所有url请求转发到本机(服务器)IP80端口,nginx能不能分析数据包中的信息再转发到具体端口?可以在客户端实现发请求包时header中包含某些meta信息。否则是否一定要另外新买一个域名,两种客户端分别通过两种domian转发,这样就有两个不同的server_name
登录后可查看更多问答,登录/注册
中间件、负载均衡、应用层安全防护、动静分离、Nginx+LUA开发等
3.3k 10
2.2k 12
1.1k 12
1.8k 11