使用Rails应用程序和乘客的nginx子域故障 [英] nginx subdomain failure with Rails app and passenger
问题描述
我对nginx的部署是全新的,并且在乘客运行的rails应用程序的设置子域中出现问题。我的应用程序结构就像这样
- sss.com(父域)
- sub.sss.com (subdomain)
- zzz.com(将被重定向到sub.sss.com)
为了更清晰的观点,请考虑gmail结构
- google.com(父域)
- mail.google.com(subdomain)
- gmail.com(将被重定向到mail.google.com)
请记住,sub.sss.com不仅仅是sss下的一个目录,它完全是一个不同的rails应用程序。
要设置类似的结构我已经配置了这样的nginx
server {
listen 80;
server_name sss.com * .sss.com;
重写^(。*)http://sss.com$1永久;
}
server {
listen 80;
server_name sss.com;
passenger_enabled on;
access_log logs / sss.log;
error_log logs / sss_error.log;
root / var / www / sss / public;
}
server {
listen 80;
server_name sub.sss.com;
passenger_enabled on;
access_log logs / sub.log;
error_log logs / sub_error.log;
root / var / www / sub / public;
}
server {
listen 80;
server_name zzz.com;
重写^(。*)http://sub.sss.com$1永久;
}
当我启动nginx我收到这条警告消息
nginx:[warn]冲突的服务器名称sss.com在0.0.0.0:80,忽略
/ pre>
当尝试访问url www.sss.com时收到此消息
Chrome - 错误310(net :: ERR_TOO_MANY_REDIRECTS):重定向太多。
FF - Firefox已经检测到服务器正在以这种永远不会完成的方式重定向该地址的请求。
但是当我访问zzz.com,它成功地重定向到sub.sss.com与同样的错误。
看起来它在某种循环中混乱。任何人都有一个想法如何解决这个问题?
解决方案在您的第一个服务器中,您还将第二个服务器定义为sss.com 。你只需要从第一个删除。像这样:
server {
listen 80;
server_name * .sss.com;
重写^(。*)http://sss.com$1永久;
}
server {
listen 80;
server_name sss.com;
passenger_enabled;
access_log logs / sss.log;
error_log logs / sss_error.log;
root / var / www / sss / public;
}
server {
listen 80;
server_name sub.sss.com;
passenger_enabled on;
access_log logs / sub.log;
error_log logs / sub_error.log;
root / var / www / sub / public;
}
server {
listen 80;
server_name zzz.com;
重写^(。*)http://sub.sss.com$1永久;
}
I am totally new to nginx deployment and having problem setting up the subdomain for rails app which is running in passenger. My app structure is like this
-- sss.com (parent domain) -- sub.sss.com (subdomain) -- zzz.com (which will be redirected to sub.sss.com)
For more clear perspective, think of the gmail structure
-- google.com (parent domain) - mail.google.com (subdomain) -- gmail.com (which will be redirected to mail.google.com)
And remember sub.sss.com is not just a directory under sss, its completely a different rails app.
To setup a similar structure i have configured nginx like this
server { listen 80; server_name sss.com *.sss.com; rewrite ^(.*) http://sss.com$1 permanent; } server { listen 80; server_name sss.com; passenger_enabled on; access_log logs/sss.log; error_log logs/sss_error.log; root /var/www/sss/public; } server { listen 80; server_name sub.sss.com; passenger_enabled on; access_log logs/sub.log; error_log logs/sub_error.log; root /var/www/sub/public; } server { listen 80; server_name zzz.com; rewrite ^(.*) http://sub.sss.com$1 permanent; }
When i start nginx i got this warning message
nginx: [warn] conflicting server name "sss.com" on 0.0.0.0:80, ignored
And got this message when tried to access the url www.sss.com
Chrome - Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.
FF - Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
But when i access zzz.com, it successfully redirects to sub.sss.com with a same error.
Seems its messed up in some kind of loop. anybody got a idea how to solve this?
解决方案In your first server you define the sss.com like server in the second too. You just need delete from first. like that :
server { listen 80; server_name *.sss.com; rewrite ^(.*) http://sss.com$1 permanent; } server { listen 80; server_name sss.com; passenger_enabled on; access_log logs/sss.log; error_log logs/sss_error.log; root /var/www/sss/public; } server { listen 80; server_name sub.sss.com; passenger_enabled on; access_log logs/sub.log; error_log logs/sub_error.log; root /var/www/sub/public; } server { listen 80; server_name zzz.com; rewrite ^(.*) http://sub.sss.com$1 permanent; }
这篇关于使用Rails应用程序和乘客的nginx子域故障的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!