2016-06-11 7 views
0

У меня есть приложение для рельсов 4, и я хочу запустить его с помощью SSL на webrick. Что мне нужно сделать?webrick используя ssl Что делать?

Я добавил сертификат SSL для домена и как этот запущен при

Bundle EXEC рельсов S -e производства -p 3001 --binding = 0.0.0.0

Теперь я получил эту ошибку:

Internal Server Error 

The server encountered an internal error or misconfiguration and was unable to complete your request. 

Please contact the server administrator at to inform them of the time this error occurred, and the actions you performed just before this error. 

More information about this error may be available in the server error log. 

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request. 

Apache Server at domain.de Port 443 

Благодаря

директив, установленные для Apache HTTPS

ProxyPreserveHost On 
ProxyRequests On 
ServerName domain.de 
ServerAlias *.domain.de 
ProxyPass/https://subdomain.domain.de:3001/ 
ProxyPassReverse/https://subdomain.domain.de:3001/ 
SSLEngine on 
+1

Похоже контратип http://stackoverflow.com/questions/3640993/how-do-you-configure-webrick-to-use-ssl-in -rails? lq = 1 Я бы проголосовал за закрытие, но щедрость предотвращает близкие голоса, которые кажутся неправильными. –

ответ

5

Большинство людей решат это, переключаясь с webrick на тонкий (или даже лучше, единорог/puma/пассажир). Я не думаю, что webrick предназначен для запуска в производстве.

Вы также можете прервать SSL на apache, чтобы webrick обрабатывал только http. (Также, предполагая, что Apache работает в одном и том же поле, вам не нужно связываться с 0.0.0.0. Localhost будет делать, а привязка к внешнему IP-адресу будет звучать как уязвимость безопасности.)

Если вы действительно хотите сохранить webrick и он обрабатывает SSL, вы меняете bin/rails, как описано в this other answer.

+0

Когда мое приложение работает правильно с webrick, оно также работает правильно с passanger? и есть ли у вас короткий учебник по установке и удалению приложения с помощью passanger? – Felix

+0

Я запускаю приложение теперь с passanger, но получил ошибку en – Felix

+0

ошибка такая же, как bevore. Добавлены мои https-директивы для apache выше – Felix

0

Чтобы использовать SSL только обеспечить это в application.rb

config.force_ssl = true 

WEBrick для производства не recommended.Right теперь лучший и самый простой способ для развертывания в производстве используется Nginx с пассажиром или Puma.

Nginx с Phusion Пассажиром

Вы можете оформить официальную документацию here это очень простые и шаг мудрого процесса.

Gem для пассажирского

gem "passenger", ">= 5.0.25", require: "phusion_passenger/rack_handler" 

Nginx с Puma

Установить Puma камень добавить это в вашем Gemfile

gem "puma" 

Создать PROCFILE в вашем корневом каталоге приложения. PROCFILE для простой пумы

web: bundle exec puma -C config/puma.rb 

Гото/создать конфигурационный/Инициализатор/puma.rb

редактировать значение в непосредственной близости от рабочего, чтобы соответствовать с вашим сервером cores.This как выглядит мой файл.

workers 2 #Change this to match the number of cores in your sever.My server has 2 cors 
threads_count = Integer(ENV['MAX_THREADS'] || 5) 
threads threads_count, threads_count 

preload_app! 

rackup  DefaultRackup 
port  ENV['PORT']  || 3000 
environment ENV['RACK_ENV'] || 'development' 

on_worker_boot do 
    # Worker specific setup for Rails 4.1+ 
    # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot 
    ActiveRecord::Base.establish_connection 
end 

файл конфигурации Nginx

server { 
    listen 80; 
    listen 443 ssl; 

    server_name servername.com; 

    ssl_certificate /root/cert_chain.crt; 
    ssl_certificate_key /root/mycert.key; 

    # Tell Nginx and Passenger where your app's 'public' directory is 
    path to your apps public folder 

    # Turn on Passenger 
    passenger_enabled on; 
    passenger_ruby /root/.rbenv/shims/ruby; 

    # vary encoders 

    gzip on; 
    gzip_min_length 1100; 
    gzip_buffers 4 32k; 
    gzip_types text/plain application/json application/x-javascript text/xml text/css text/javascript; 
    gzip_vary on; 

} 
+0

Спасибо, но уже решена с помощью apache + passanger – Felix