Linux/Nginx 重定向过多
Linux/Nginx too many redirects
我尝试了许多 nginx 配置,直到找到有效的配置。我不确定我的服务器上是否有我所有更改的某种存储记录,因为当我打开我的 web 应用程序时,我收到错误消息“重定向太多”。它具有与以前工作时相同的重定向数量,只是配置不同。谁能提供任何见解?
server {
listen 80;
server_name cigars-rec.com;
location / {
return 301 https://$host$request_uri;
}
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
}
upstream cr2-cigar-recommender {
server cr2-cigar-recommender:8501;
}
server {
listen 443 ssl;
server_name cigars-rec.com;
ssl_certificate /etc/letsencrypt/live/cigars-rec.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cigars-rec.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# streamlit config
location / {
proxy_pass http://cigars-rec.com;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
location /page1 {
default_type "text/html";
alias /templates/page1.html;
}
location /page2 {
default_type "text/html";
alias /templates/page2.html;
}
location /page3 {
default_type "text/html";
alias /templates/page3.html;
}
}
在您的配置文件中,您在 80 端口的 http 服务器块中有此指令:
location / {
return 301 https://$host/$request_uri;
}
这似乎是一个有意的 http 到 https 重定向,这可能正是您想要的。
但是你的 https 服务器块有一个 proxy_pass 告诉 nginx 建立一个到 http://cigars-rec.com/ 的 http 连接并且 return 响应返回给客户端。该 http URL 将由发出重定向的 http 服务器块提供服务。
这意味着对与该位置匹配的您网站的 http 或 https 版本的任何请求都将始终 return 重定向并导致您描述的情况。
我尝试了许多 nginx 配置,直到找到有效的配置。我不确定我的服务器上是否有我所有更改的某种存储记录,因为当我打开我的 web 应用程序时,我收到错误消息“重定向太多”。它具有与以前工作时相同的重定向数量,只是配置不同。谁能提供任何见解?
server {
listen 80;
server_name cigars-rec.com;
location / {
return 301 https://$host$request_uri;
}
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
}
upstream cr2-cigar-recommender {
server cr2-cigar-recommender:8501;
}
server {
listen 443 ssl;
server_name cigars-rec.com;
ssl_certificate /etc/letsencrypt/live/cigars-rec.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cigars-rec.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# streamlit config
location / {
proxy_pass http://cigars-rec.com;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
location /page1 {
default_type "text/html";
alias /templates/page1.html;
}
location /page2 {
default_type "text/html";
alias /templates/page2.html;
}
location /page3 {
default_type "text/html";
alias /templates/page3.html;
}
}
在您的配置文件中,您在 80 端口的 http 服务器块中有此指令:
location / {
return 301 https://$host/$request_uri;
}
这似乎是一个有意的 http 到 https 重定向,这可能正是您想要的。
但是你的 https 服务器块有一个 proxy_pass 告诉 nginx 建立一个到 http://cigars-rec.com/ 的 http 连接并且 return 响应返回给客户端。该 http URL 将由发出重定向的 http 服务器块提供服务。
这意味着对与该位置匹配的您网站的 http 或 https 版本的任何请求都将始终 return 重定向并导致您描述的情况。