我需要一些帮助,因为我已经被困在它上太久了。这是我的用例:
我需要从我的主域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
非常感谢任何花时间解决这个问题的人。这是我身边的一根刺,我必须转向新鲜事物。将接受第一个立即起作用的答案。
其他一些注意事项 - 可能很重要 - 如果事情被揭露,我会添加:
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。test.co
返回相同的 - 301位置为
https://test.co https://test.co
无法访问,但test.co
仍然无法访问
重定向循环