I used passenger standalone for my app. currently my app is running on both http and https . i want to redirect all http request to https. I used load balancer in my application. I read this articles
https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/
https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template
http://code.eklund.io/blog/2015/03/17/managing-rewrites-for-a-rails-app-on-heroku-with-nginx-plus-phusion-passenger/
i tried this 2 methods
1)
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
2)
if ($http_x_forwarded_proto != "https") {
rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent;
}
i tried all process in same way. but every time it goes in to infinite loop and before i start passenger the instance terminate itself and create new instance because of too many request timeout.
I can't figure out, whether it is issue of elastic load balancer or passenger config. I think when i stop passenger and user try to access app. the request time out generated and due to that new instance created. i am not sure.
Thanks in advance :)
Classic Load Balancers can't redirect HTTP traffic to HTTPS by default. Instead, configure your rewrite rules for the web servers instances behind the Classic Load Balancer. You must configure your rewrite rules to use the X-Forwarded-Proto header and redirect only HTTP clients.
Select a load balancer, and then choose HTTP Listener. Under Rules, choose View/edit rules. Choose Edit Rule to modify the existing default rule to redirect all HTTP requests to HTTPS. Or, insert a rule between the existing rules (if appropriate for your use case).
Q: Can I use a single Application Load Balancer for handling HTTP and HTTPS requests? A: Yes, you can add listeners for HTTP port 80 and HTTPS port 443 to a single Application Load Balancer.
I hope your all certificates are installed correctly and pointing to the right path. If not check the below configuration
Passenger.json
{
"environment": "production",
"instance_registry_dir": "/var/run/passenger-instreg",
"daemonize": true,
"user": "myappuser",
"port": 443,
"ssl": true,
"ssl_certificate": "/path/to/ssl_cert.pem",
"ssl_certificate_key": "/path/to/ssl_key.pem",
"nginx_config_template": "/path/to/nginx.conf.erb"
}
You need to use the same configuration which you use for nginx for redirecting from http to https
http {
server_tokens off;
server {
listen 80 default_server;
listen [::]:80 default_server;
# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}
Latest Link
Here is the configuration of standalone passenger to redirect from http to https latest_link
Please refer this link
You can do this at the proxy level, or at the app level. To do it at the app level:
# config/environments/production.rb
...
config.force_ssl = true
...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With