首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx Rails网站和多个港口的乘客

问Nginx Rails网站和多个港口的乘客
EN

Stack Overflow用户
提问于 2015-02-15 10:35:53
回答 1查看 649关注 0票数 0

我想运行两个版本的rails站点,一个用于生产,一个用于开发。生产一个将监听端口80和发展将监听端口9033。下面是位于同一个文件中的配置服务器块

代码语言:javascript
复制
server {
  listen 80 default_server;
  server_name mywebsite.com;
  passenger_enabled on;
  passenger_app_env production;
  root /path/to/public/dir;
}

server {
  listen 9033 default_server;
  server_name mywebsite.com;
  passenger_enabled on;
  passenger_app_env development;
  root path/to/public/dir;
  passenger_friendly_error_pages on;
}

问题在于,当我试图通过浏览器连接到网站时,无论我使用哪个端口,我总是得到与第一个服务器块中指定的环境相对应的网站版本。所以在我上面给出的例子中,它总是服务于我网站的制作版本。

为什么第一个服务器块会覆盖第二个服务器块,如何使它能够访问我的网站的任何一个版本,而不需要手动更改配置文件和重新加载nginx?

更新:

即使在发送每个HTTP请求之前清除浏览器缓存之后,这些建议都没有起作用。我将服务器块更改为以下内容,希望我的服务器返回网站的不同版本

代码语言:javascript
复制
server {
  listen *:80;
  server_name mywebsite.com;
  passenger_enabled on;
  passenger_app_env production;
 root /home/alex/code/m2m/public/;
}


server {
  listen *:80;
  server_name dev.mywebsite.com;
  passenger_enabled on;
  passenger_app_env development;
  root /home/alex/code/m2m/public/;
  passenger_friendly_error_pages on;
}

然后在我的/etc/host文件中添加了下面一行

代码语言:javascript
复制
my.ip.addr.ess    dev.mywebsite.com

但是对这两个域名的请求只会导致我的网站的制作版本被返回。注意,我使用的是默认的nginx.conf文件。有什么方法可以调试我的浏览器(Chrome 40.0.2214.111(64位)),看看我的请求是否/在哪里被修改?我认为问题就在客户方面,因为评论者给我的建议似乎是可行的。

EN

回答 1

Stack Overflow用户

发布于 2015-02-15 21:48:13

如果你试试这个:

代码语言:javascript
复制
listen *:80;

和

代码语言:javascript
复制
listen *:9033;

这是我关于旨在nginx配置的问题的建议。根据nginx,通过放置这些侦听指令,nginx将首先匹配IP:端口服务器块,然后查看匹配 IP:port的服务器块中的server_name指令。因此,如果请求在错误的环境中包含正确的“端口”,这与应用程序或乘客指令有关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28525194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档