Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Phaedra Solutions, All rights reserved 2024
This article mainly focuses on how to run the rails app in a subdirectory using NGINX. You will learn the reverse proxy of Nginx to serve your rails app.
It was needed because I came to meet a problem in which I want to run a specific part of a website in Ruby on Rails for a specific subdirectory. For example, my website is in PHP www.myphpwebsite.com/ and I want to run Ruby on rails site on the same url with different subdirectories like www.myphpwebsite.com/runthisinrubyonrails/. Whenever /runthisinrubyonrails/ detected, It should run on a different servers which is running ROR.
Rails give us a simple configuration for this purpose.
In config/application.rb file, add the following code:
module YourAPPName
class Application < Rails::Application
config.relative_url_root = '/runthisinrubyonrails'
# some other configuration code
end
end
In config.ru file:
map Rails::Application.config.relative_url_root || "/" do
run Rails.Application
end
we can check everything works fine with click route with /runthisinrubyonrails/ and simple by /.
for example, first asset was getting by www.myphpwebiste.com/assets/favicon.ico now you can try with www.myphpwebsite.com/runthisinrubyonrails/assets/favicon.ico. Both should work because when we have defined that in our config.ru file
Rails::Application.config.relative_url_root || "/"
if relative_url_root found then try with that if not then try with “/”
So we have the following configuration:
upstream unicorn_sock {
server your_sock_path;
}
server {
root <path_to_your_rails_app>/public;
location @proxy_rails_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://unicorn_sock;
}
location /runthisinrubyonrails/ {
alias <path_to_your_rails_app>/public/;
try_files $uri @proxy_rails_app;
}
try_files $uri @proxy_rails_app;
# some other configuration code
}