我有一个小型 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>