Ruby on rails example.com重定向您的次数太多。错误\u太多\u重定向
我试图在Ubuntu 16.04上用Let's Encrypt保护Nginx 获取SSL证书之前的example.conf文件Ruby on rails example.com重定向您的次数太多。错误\u太多\u重定向,ruby-on-rails,ubuntu,ssl,nginx,lets-encrypt,Ruby On Rails,Ubuntu,Ssl,Nginx,Lets Encrypt,我试图在Ubuntu 16.04上用Let's Encrypt保护Nginx 获取SSL证书之前的example.conf文件 server { server_name example.com www.example.com ; # Tell Nginx and Passenger where your app's 'public' directory is root /var/www/backup/mycode/public; # Turn on Passeng
server {
server_name example.com www.example.com ;
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/backup/mycode/public;
# Turn on Passenger
passenger_enabled on;
rails_env development;
passenger_ruby /usr/local/rvm/gems/ruby-2.5.6/wrappers/ruby;
}
server {
server_name example.com www.example.com ;
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/backup/example.com/public;
# Turn on Passenger
passenger_enabled on;
rails_env development;
passenger_ruby /usr/local/rvm/gems/ruby-2.5.6/wrappers/ruby;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name example.com www.example.com ;
listen 80;
return 404; # managed by Certbot
}
工作正常
我尝试通过以下方式获取SSL证书:
sudo certbot --nginx -d example.com -d www.example.com
结果是
Your existing certificate has been successfully renewed, and the new certificate
has been installed.
The new certificate covers the following domains: https://example.com and
https://www.example.com
获取SSL证书后的example.conf文件
server {
server_name example.com www.example.com ;
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/backup/mycode/public;
# Turn on Passenger
passenger_enabled on;
rails_env development;
passenger_ruby /usr/local/rvm/gems/ruby-2.5.6/wrappers/ruby;
}
server {
server_name example.com www.example.com ;
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/backup/example.com/public;
# Turn on Passenger
passenger_enabled on;
rails_env development;
passenger_ruby /usr/local/rvm/gems/ruby-2.5.6/wrappers/ruby;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name example.com www.example.com ;
listen 80;
return 404; # managed by Certbot
}
正在重定向到太多次
example.com重定向您的次数太多。
错误\u太多\u重定向
为什么它重定向了太多次
第二个服务器块的用途是什么
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name example.com www.example.com ;
listen 80;
return 404; # managed by Certbot
}
如何将所有重定向到
编辑1
将certibot托管代码移动到第二个服务器块已停止过多重定向问题。但我的网站又回到了HTTP而不是https
server {
server_name example.com www.example.com ;
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/backup/example.com/public;
# Turn on Passenger
passenger_enabled on;
rails_env development;
passenger_ruby /usr/local/rvm/gems/ruby-2.5.6/wrappers/ruby;
}
server {
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
if ($host = www.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name example.com www.example.com ;
listen 80;
return 404; # managed by Certbot
}
试试这个:
server {
server_name example.com www.example.com ;
listen 80;
listen 443 ssl;
if ($scheme != "https") {
return 301 https://www.example.com$request_uri;
}
if ($host = example.com) {
return 301 https://www.example.com$request_uri;
}
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/backup/example.com/public;
# Turn on Passenger
passenger_enabled on;
rails_env development;
passenger_ruby /usr/local/rvm/gems/ruby-2.5.6/wrappers/ruby;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
如果使用HTTP而不是HTTPS或主机为example.com,则应重定向到www.example.com
关于你的问题:
我不确定,也许你在ruby代码中也重定向了。EDIT1代码示例将永远重定向,因为它使用$host重定向
在用于HTTP的端口80上重定向流量的奇怪方式
在我的示例中,我修复了重定向到www.example.com而不是$host的问题
试试这个:
server {
server_name example.com www.example.com ;
listen 80;
listen 443 ssl;
if ($scheme != "https") {
return 301 https://www.example.com$request_uri;
}
if ($host = example.com) {
return 301 https://www.example.com$request_uri;
}
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/backup/example.com/public;
# Turn on Passenger
passenger_enabled on;
rails_env development;
passenger_ruby /usr/local/rvm/gems/ruby-2.5.6/wrappers/ruby;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
如果使用HTTP而不是HTTPS或主机为example.com,则应重定向到www.example.com
关于你的问题:
我不确定,也许你在ruby代码中也重定向了。EDIT1代码示例将永远重定向,因为它使用$host重定向
在用于HTTP的端口80上重定向流量的奇怪方式
在我的示例中,我修复了重定向到www.example.com而不是$host的问题