【发布时间】:2013-08-05 09:49:32
【问题描述】:
我有一个现有的 apache 服务器,https 处理 https://www.example.com 的流量。
如何配置 rails(和 apache)来处理来自另一个端口的 https 请求,例如https://www.example.com:6000/api/v1/datafeed/?
【问题讨论】:
标签: ruby-on-rails apache https centos
我有一个现有的 apache 服务器,https 处理 https://www.example.com 的流量。
如何配置 rails(和 apache)来处理来自另一个端口的 https 请求,例如https://www.example.com:6000/api/v1/datafeed/?
【问题讨论】:
标签: ruby-on-rails apache https centos
您可以使用带有平衡器模块的 Apache 代理。以下是我使用 NamedVirtualHost 在 Apache 2.4 后面配置 Rails 的方法:
在httpd.conf中启用以下模块:
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
对于您的 VirtualHost 配置如下所示
Listen 127.0.0.1:6000 https
<VirtualHost *:6000>
ServerAdmin webmaster@example.com
ServerName www.example.com
DocumentRoot "rails_root/public"
<Directory "rails_root/public"
Require all granted
Options -MultiViews
</Directory>
ProxyPass / balancer://myapp_cluster/
ProxyPassReverse / balancer://myapp_cluster/
ProxyPreserveHost On
ProxyVia On
<Proxy balancer://myapp_cluster>
# Note the port here, this should be the port where your rails app is running.
BalancerMember http://localhost:3000
</Proxy>
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile "/etc/httpd/conf/ssl/certificate_file.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/certificate_key.key"
ErrorLog "/var/log/httpd/error.log"
CustomLog "/var/log/httpd/access.log" combined
</VirtualHost>
【讨论】: