使用多个proxy_pass

时间:2017-09-06 14:10:37

标签: node.js nginx elastic-beanstalk

我需要一些帮助,因为我已经被困在它上太久了。这是我的用例

我需要从我的主域test.co代理到各个端点的两个不同位置。但是,现在,我只想使用= /(主页)和/(其他地方)的位置块。两个单独的位置在主页上是webflow.test.co(匿名时删除了真实域名),我们的子域名以及我们在其他任何地方的NodeJS服务器。这是问题所在:

使用下面的代码(我的nginx.conf,通过ElasticBeanstalk实例运行)会在主页/处产生无限重定向循环。浏览器中的错误是ERR_TOO_MANY_REDIRECTS,但很清楚发生了什么:浏览器从原始test.co重定向到https://test.co,再次重定向到https://test.co广告。 。我尝试过改变我能想到的几乎所有内容......一些例子:server_name最初是一个正则表达式,我删除了它。 /位置块曾经是一个正则表达式,有一些问题,我删除了它。在标头中添加了X-Forwarded-Proto $scheme

这些只是一些事情,但这里的底线是:通过3天的测试,唯一似乎有效的方法是删除proxy_set_header Host $host;,或将其设置为{{1} (因此打败了目的)。当然,这是一个不可接受的解决方案,因为我需要网址来匹配我的原始域...但确实解决问题。也许这可以给你们一些见解。

这是我的代码:

webflow.test.co

非常感谢任何花时间解决这个问题的人。这是我身边的一根刺,我必须转向新鲜事物。将接受第一个立即起作用的答案。

其他一些注意事项 - 可能很重要 - 如果事情被揭露,我会添加:

  • curl -v upstream nodejs { server 127.0.0.1:8081; keepalive 256; } # Redirect all non-HTTPS to non-WWW HTTPS server { listen 8080; server_name "~^(?:www\.)?(.*)$"; return 301 https://$host$request_uri; } # Redirect WWW HTTP to non-WWW HTTP server { listen 4430; server_name "~^www\.(.*)$"; return 301 https://$1$request_uri; } # Reverse-proxy to http://nodejs server { listen 4430; server_name test.co; client_max_body_size 50M; location = / { proxy_pass http://webflow.test.co; proxy_set_header Connection ""; proxy_http_version 1.1; 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_set_header X-Forwarded-Proto $scheme; } location / { proxy_pass http://nodejs; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 返回位置为https://test.co的301。
  • curl -v test.co返回相同的 - 301位置为 https://test.co
  • 删除顶部的两个非WWW和非HTTPS并不能解决问题 问题。它使https://test.co无法访问,但test.co仍然无法访问 重定向循环

0 个答案:

没有答案