Неправильный порт на перенаправлении приложения 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
}