我的nginxconfiguration很好,直到我添加一个强制HTTPS的redirect。 redirect之前的工作configuration是:
server { listen 80; listen 443 default_server ssl; server_name my-domain.com www.my-domain.com; client_max_body_size 5M; location / { proxy_pass http://localhost:3000; } }
我在服务器的端口3000上运行一个应用程序,我想在端口80和端口443(http和https)的域中提供它。 不过,我也希望在用户尝试通过HTTP访问时将用户redirect到HTTPS。 我用这个答案来设置:
server { listen 80; server_name my-domain.com www.my-domain.com; client_max_body_size 5M; return 301 https://$server_name$request_uri; } server { listen 443 default_server ssl; server_name my-domain.com www.my-domain.com; client_max_body_size 5M; location / { proxy_pass http://localhost:3000; } }
但是这会导致redirect循环。 我承认,对于nginx我相当陌生,所以如果任何人都可以把我的资源,可以解释这一点,那么将不胜感激。 我的猜测是它与位置和/或proxy_pass的使用有关,但是通过文档挖掘并没有带来更深的见解。
另外需要注意的是,这个应用程序正在通过CloudFlare发送。
这已经解决了。 我坚持原来的nginxconfiguration,并使用CloudFlare页面规则来强制HTTPS。
使用的规则是:
http://*gistbook.io/* =>总是使用HTTPS