Rails 3 与 Thin Server - 从 URL 中删除端口 3000

Rails 3 与 Thin Server - 从 URL 中删除端口 3000

我有一个小型 Rails 应用程序,当前由端口 3000 上的 Thin 服务器提供服务(开发和生产),在 Debian 机器上,还运行着 apache2,为 PHP 应用程序提供服务。

我不确定在当前设置下这是否可行,但是有没有办法从 rails 应用程序 url 中删除端口号,但仍然让 Thin 从同一端口监听,以免碰到 apache?

当前的

https://my-rails-site:3000/

建议的

https://my-rails-site/

或者我应该只使用像 Passenger 这样的东西?

答案1

不,这是不可能的。要么从 Apache 内部运行它(例如使用 Passenger),要么使用Apache 作为代理将其路由至另一个端口。

但是,如果您在 Apache 上根本不使用 SSL(并且该端口未使用),则可以在端口 443 上运行您的应用程序(如果它也使用 SSL),因为如果您提供 HTTPS URL,则会假定使用端口 443。

答案2

如果您正在使用 Passenger,那么我必须使用以下方法来使其在 www.mysite.com 上运行,而无需在 centos 服务器上使用 www.mysite.com:80:

在 etc/httpd/conf 中,关键是取消注释 NameVirtualHost *:80 并将 * 更改为我的服务器的 IP 地址。确保取消注释 Listen 80。还要将您的 IP 添加到 VirtualHost 标记。它必须在端口 80 上运行,而不是 8080 或您选择的其他端口。

NameVirtualHost xx.xx.xx.xx:80  

Listen 80  

<VirtualHost xx.xx.xx.xx:80>
    ServerName www.mysite.com
    # !!! Be sure to point DocumentRoot to 'public'!
    DocumentRoot /var/www/vhosts/mysite.com/httpdocs/public/
    <Directory /var/www/vhosts/mysite.com/httpdocs/public/>
       # This relaxes Apache security settings.
       AllowOverride all
       # MultiViews must be turned off.
       Options -MultiViews
    </Directory>
</VirtualHost>

相关内容