我在端口3037上的Nginx + Thin服务器上运行Rails应用程序。 这是测试服务器。
当我在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;
}
答案 0 :(得分:1)
我通过重写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;
}
}
答案 1 :(得分:0)
我们可以设置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
}