微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nginx反向代理:如何实现?

我正在尝试使用基于URL的Nginx进行反向代理。 我希望http://mydomain.example.com/client1/...被redirect到http://127.0.0.1:8193/... 我尝试了很多方法,而且都没有工作。 请注意,该应用程序可以redirect。 这些是我最后解决scheme的configuration文件

server { listen 80; server_name mydomain.example.com; location / { set $instance none; if ($request_uri ~ ^/(.*)/$) { set $instance $1; } set $no_cookie true; if ($http_cookie ~ "instance=([^;] +)(?:;|$)") { set $instance $1; set $no_cookie false; } if ($no_cookie = true) { add_header Set-Cookie "instance=$instance;Domain=$host;Path=/"; rewrite ^ / break; } include instances.conf; }

instances.conf

proxy_redirect off; 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_connect_timeout 90; proxy_send_timeout 60; # Installation of language packs,etc. can take a long time proxy_read_timeout 10800; if ($instance = client1) { proxy_pass http://127.0.0.1:8193; } if ($instance = client2) { proxy_pass http://127.0.0.1:8194 } ...

当浏览器请求http://mydomain.example.com/client1/ ,Nginx应该设置一个名为instance的cookie,其值为client1然后将stream量redirect到相应的代理。 对于后续的查询,它应该使用这个cookie来进行redirect。 我有的问题是它从不设置$instancevariablesclient1 。 不要忘记,应用程序不知道前缀/client1 。

你有好主意吗? 你知道更好的解决scheme吗?

如何configurationNginx404之前尝试两个上游?

Rails3应用程序在代理之后

如何在proxy_pass中设置内容types?

如何用Apache重写代理安装中的位置响应头

docker代理与自定义networking

Nginx反向代理,双向SSL到weblogic

反向代理:在Nginx上使用bokeh服务器的Flask应用程序

Nginx – 从上游服务器读取自定义标题

如何使用ProxyPass通过Express提供静态文件

Nginx – 在不同端口上反向代理多个API

用于获取cookie的正则表达式是错误的。 我已经改变了

"instance=([^;][^ ]+)(?:;|$)"

现在它工作。

编辑:这只是解决方案的一部分。 对不起。 还有一个问题。 看到我下面的评论

这与你的问题没有关系,但是“proxy_connect_timeout”

“这个指令为连接上游服务器分配一个超时值,要记住这个时间不能超过75秒。

查看Nginx的地图模块

map $uri $proxy { /client1 http://127.0.0.1:8193/client1; /client2 http://127.0.0.1:8194/client2; } server { server_name my.domain.com; proxy_pass $proxy; }

请注意,在proxy_pass URI的末尾添加/ clientX将从请求中去除这部分URI(这对我来说似乎是理性的,但可能不是您想要的)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐