How do I let nginx know I'm using rails?

483 views
Skip to first unread message

fugee ohu

unread,
Aug 15, 2019, 2:43:18 PM8/15/19
to Ruby on Rails: Talk
How do I let nginx know I'm using rails when I'm not using passenger but instead system installed nginx standalone with rails apps

Walter Lee Davis

unread,
Aug 15, 2019, 2:51:44 PM8/15/19
to rubyonra...@googlegroups.com
Set up a reverse proxy in nginx, pointed from port [80,443] to whatever port your application server [puma, unicorn, webrick] is listening at.

Walter

> On Aug 15, 2019, at 2:43 PM, fugee ohu <fuge...@gmail.com> wrote:
>
> How do I let nginx know I'm using rails when I'm not using passenger but instead system installed nginx standalone with rails apps
>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/1aff5f48-504a-426f-96c9-dadefea8025f%40googlegroups.com.

fugee ohu

unread,
Aug 15, 2019, 10:03:05 PM8/15/19
to Ruby on Rails: Talk


On Thursday, August 15, 2019 at 2:51:44 PM UTC-4, Walter Lee Davis wrote:
Set up a reverse proxy in nginx, pointed from port [80,443] to whatever port your application server [puma, unicorn, webrick] is listening at.

Walter

> On Aug 15, 2019, at 2:43 PM, fugee ohu <fuge...@gmail.com> wrote:
>
> How do I let nginx know I'm using rails when I'm not using passenger but instead system installed nginx standalone with rails apps
>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to rubyonra...@googlegroups.com.

 Not exactly the answer I was looking for If I'm using rails with nginx system install, not the passenger nginx module, then how does the nginx webserver know that I'm running RoR apps because the problem is that nginx is looking for resource routes as subdirectories of /public
 

Walter Lee Davis

unread,
Aug 16, 2019, 6:58:01 AM8/16/19
to rubyonra...@googlegroups.com
NGINX on its own cannot "run" Rails, because it is a simple httpd server. Rails needs an application server -- puma, unicorn, passenger -- to be a bridge between http and Rack protocols. Rails is a Rack application, under all the layers, and cannot host anything all by itself. Don't be confused by the fact that passenger can run as an Apache or NGINX plugin. That's just an implementation detail. Passenger can run as a stand-alone application server, too.

The pattern is this: Application Server starts up, accepts connections at some port, like 12345. NGINX or Apache or whatever Web Server starts up, accepts connections at 80 or 443 or both. A "reverse proxy" is configured in the Web Server configuration, and when a request comes in that matches it, the request is proxied to the Application Server. The response from the Application Server is then proxied back through the Web Server to the requesting browser.

1. Figure out which Application Server you want to use to run your Rails application, and configure it to start at system start, and to restart when you need it to (every time you update your Rails code).
2. Google "how do I configure a reverse proxy in NGINX". Do what you see in the results.

That's how you set this up.

Walter
> To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/7694b56e-5ae7-49a5-8068-0999acf7da64%40googlegroups.com.

fugee ohu

unread,
Aug 16, 2019, 8:55:21 AM8/16/19
to Ruby on Rails: Talk
> To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/7694b56e-5ae7-49a5-8068-0999acf7da64%40googlegroups.com.
 

Certbot was erroring out on Passenger statements in nginx.conf so I decided not to use Passenger anymore, just nginx, I thought I could do that but you say no I can't Is that right? 

Walter Lee Davis

unread,
Aug 16, 2019, 9:09:30 AM8/16/19
to Ruby on Rails: Talk
Passenger is an application server that can either run as a plug-in to a web server, just like fastcgi or mod_php, or as a stand-alone server. When it runs as a stand-alone server, it actually uses an embedded copy of nginx as part of its code—but don’t let that confuse you. It’s still an application server, running as a separate process from the ‘http’ nginx server that is listening for requests from browsers. That ‘http’ server needs to be configured with a reverse proxy to the application server.

And an aside: Passenger is the best-documented, easiest to use application server I have ever used. I would not be so quick to run away from it. Figure out what your certbot issue is and fix that. You have a lot more work ahead of you to use a different approach.

Walter
Reply all
Reply to author
Forward
0 new messages