nginx作为棱镜的反向代理

  • 2016年6月13日
  • 13个答复
  • 1957年的观点

徽章 +2
棱镜使用的JSessionId cookie尚未设置。尝试使用可用选项。有人成功地做到了吗?

13个答复

UserLevel 6
徽章 +29
我很好奇,您想在需要这种配置的地方做什么?
徽章 +2
在这里,我们没有很多公共IP。因此,我们将所有域都指向一个VM,在该VM上,我们将反向代理(重定向请求)设置为仅具有内部IP的另一个VM。

我也有一个域注册为Prism控制台,因此我们可以访问域而不是IP,并且也可以访问外部外部网络,但是我遵循的其他站点的配置也不适用于Prism。

下面附加样品配置

服务器 {
听80;
server_name示例网站
地点 / {
proxy_set_header主机example.com;
PROXY_SET_HEADER X-REAL -IP $ remote_addr;
proxy_set_header x-forwarded proto http;
proxy_set_header x-forwarded-for $ remote_addr;
proxy_set_header x-forwarded-host $ remote_addr;
proxy_passhttps://172.x.x.x.x:9440/;
#proxy_connect_timeout 240;
#proxy_send_timeout 240;
#proxy_read_timeout 240;
///添加了此代码以设置cookie,但没有工作
if($ http_cookie〜*“ jsessionid =([^;]+)(?:; | $)”){
设置$ co“ jsessionid = $ 1”;
}
proxy_set_header cookie“ $ co”;
///代码结束
}
}
UserLevel 6
徽章 +29
可以说您正在尝试使用公共IP从Internet访问Prism?
徽章 +2
是的
徽章 +2
嗨,拉维,

cookie未被设置为您遇到的主要问题吗?您能描述详细信息吗?浏览器带有DEV控制台的屏幕截图也将很有帮助。

谢谢,
- 射线
徽章 +1
乍一看,值得尝试的两件事:
1)将Proxy_Pass指令移至该部分的末尾(set_cookie部分之后)
2)与您正在查看的cookie方法,可以查看以下参数proxy_cookie_domain:
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain
徽章 +2
对延迟回应表示歉意

我已经尝试了建议的步骤,但问题仍然存在
徽章 +2
对于延迟的回应表示歉意。

我认为饼干是问题所在。
查找设置配置时要提出的网络请求的图像

徽章
拉维,我很感激这已经解决了将近一年,所以我假设您已经找到了答案。以防万一,为了Docuthaiton,这是两个指针。全面披露:我为Nginx工作,刚刚开始挖掘Nutanix平台,所以YMMV。1)要使用NGINX设置新的cookie,您需要使用“ add_header set-cookie”指令而不是'proxy_set_header'。使用您的示例的格式将是'add_header set-cookie jsessionid = $ co;'(请注意,在这种情况下,您需要从$ CO集中删除“ JSessionId”)。2)Nginx Plus是NGINX的商业版本,支持可以从应用程序中读取和学习JSessionID的其他负载平衡方法。作为Nutanix的新手,我不确定这是您要寻找的东西,但是仅基于您在寻找JSessionId的if语句,我认为这是同一用例。您可以在nginx.org上找到有关JSessionId学习的文档。希望在这几个月之后有所帮助。 ravismula wrote:Here we don't have many public IP's. So we point all the domains to one VM, on which we setup a reverse proxy (redirect request) to another VM which has only an internal IP.

我也有一个域注册为Prism控制台,因此我们可以访问域而不是IP,并且也可以访问外部外部网络,但是我遵循的其他站点的配置也不适用于Prism。

下面附加样品配置

服务器 {
听80;
server_name示例网站
地点 / {
proxy_set_header主机example.com;
PROXY_SET_HEADER X-REAL -IP $ remote_addr;
proxy_set_header x-forwarded proto http;
proxy_set_header x-forwarded-for $ remote_addr;
proxy_set_header x-forwarded-host $ remote_addr;
proxy_passhttps://172.x.x.x.x:9440/;
#proxy_connect_timeout 240;
#proxy_send_timeout 240;
#proxy_read_timeout 240;
///添加了此代码以设置cookie,但没有工作
if($ http_cookie〜*“ jsessionid =([^;]+)(?:; | $)”){
设置$ co“ jsessionid = $ 1”;
}
proxy_set_header cookie“ $ co”;
///代码结束
}
}


Userlevel 1
徽章 +2

@Jon您对PC前反向代理的好奇心的一种可能答案是,提供自助服务的更好的UX。例如,我们正在使用Prism中央自助服务为开发人员提供VM。我们不想给他们一个带有9440端口的URL,我们想发布一些常见问题解答。我们试图用NGINX反向代理PC,但是我们遇到了问题(基于路径的反向代理和NGINX缓存)。因此,我们最终获得了一个带有PC和FAQ的链接的着陆页。

(1)这种预期的行为是反向代理PC吗?有人有工作吗?

(2)可以将PC配置为在443上收听吗?我检查的最后一个,答案是“否”。

UserLevel 6
徽章 +29

1-我怀疑有人在这里内部实际尝试过,所以我不知道一种或另一种方法是否会很好地工作或不脱机

2-不,棱镜(元素和中央)在9440上发表作为静态事物。我认为一个足够狡猾的人可以侵入它,但是它可能以奇妙的方式炸毁,因为这不是我们支持的/QA(更改Prism端口)

Userlevel 1
徽章 +2

@Jon谢谢你回来。因此,我尝试了对PC进行反向代理,并且在使用NGINX缓存,基于路径的反向代理和Web插座的初始打ic之后,我终于与以下配置一起使用了,从而导致登录失败和VM控制台访问问题。

地点 / {
proxy_pass https:// cloudConsole;
proxy_intercept_errors on;
proxy_set_header主机$主机;
PROXY_SET_HEADER X-REAL -IP $ remote_addr;
proxy_set_header x-forwarded-for $ proxy_add_x_forwarded_for;
proxy_set_header x-forwarded proto $方案;
proxy_http_version 1.1;
proxy_set_header升级$ http_upgrade;
proxy_set_header连接“升级”;
}

CloudConsole是指上游PC URL。

通过反向代理访问PC时,没有发现任何损坏的东西。

UserLevel 6
徽章 +29

酷,做得好!

回复


Baidu