Неправильный порт на перенаправлении приложения Rails, работающего на Nginx + Тонкий сервер

У меня есть приложение Rails, работающее на Nginx + Тонкий сервер на порту 3037. Это тестовый сервер.

Когда я выполняю перенаправление в приложении rails, например на domain.com:3037/users, оно перенаправляет меня на domain.com/users, порт 80.

Я могу решить эту проблему, установив порт следующим образом users_url (: port => 3037), но я не могу сделать это для каждой ссылки перенаправления. Я считаю, что существует более простой способ решить эту проблему.

Это файл конфигурации nginx:

upstream dev_server {
    server 127.0.0.1:9297;
}
server {
  listen 3037 default_server;
  server_name www.domain.com:3037;
  root /full_path_to_project/public;

  location / {
      proxy_pass http://dev_server;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $host;
  }

2 ответа

Я решил это, переписав файл конфигурации nginx, как это было сделано по этой ссылке: http://blog.mohitkanwal.com/blog/2013/04/10/deploying-rails-on-nginx-and-thin/. Вот как выглядит мой файл конфигурации:

upstream dev_server {
    server 127.0.0.1:9297;
}
server {
  listen 3037 default_server;
  server_name domain.com:3037 www.domain.com:3037;
  root /full_path_to_project/public;

  location / {
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host $http_host;
    proxy_redirect  off;
    try_files /system/maintenance.html $uri $uri/index.html $uri.html @ruby;
  }

  location @ruby {
    proxy_pass http://dev_server;
  }

}

Мы можем установить заголовок узла Nginx, чтобы сохранить ваш порт:

upstream dev_server {
    server 127.0.0.1:9297;
}
server {
    listen 3037 default_server;
    server_name www.domain.com:3037;
    root /full_path_to_project/public;

    location / {
        proxy_pass http://dev_server;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host:$server_port; # Keep your request port
    }
Другие вопросы по тегам