Так что я переходящих рельсы сайта на основе к Docker ради него;)Не получать REMOTE_USER заголовок в рельсах приложение работает на пассажирских ж/Nginx позади апача
я использую phusion/passenger-docker поддержать мое приложение рельсы. внутри него я использую rack-webauth, который захватывает WEBAUTH_USER или REMOTE_USER для части аутентификации. к сожалению, я могу использовать версию Apache для Web-сайта Стэндфорда для аутентификации; поэтому я не могу (в настоящее время) использовать для этого экземпляр nginx.
поэтому, я использую ProxyPass
в экземпляре Apache, чтобы перенаправить трафик на мое приложение nginx'd. приложение отлично работает для неавторизованных частей моего приложения; однако после того, как я аутентифицируюсь, мое приложение, которое теперь находится в докере, похоже, не видит переменную среды REMOTE_USER (через puts env
в моем ruby-коде).
Мои Apache конфигурации:
Listen 8443
<VirtualHost *:8443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/pki/tls/certs/blah.crt
SSLCertificateKeyFile /etc/pki/tls/private/blah.key
SSLCertificateChainFile /etc/pki/tls/certs/IntermediateCA.crt
ServerAdmin [email protected]
ServerName www.blah.com
RewriteOptions inherit
LogLevel info
ErrorLog logs/web_error.log
CustomLog logs/web_access.log combined
WebAuthCredCacheDir conf/webauth/credcache/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyVia On
ProxyPassInterpolateEnv On
ProxyPass/http://localhost:8080/
ProxyPassReverse/http://localhost:8080/
<Location />
SSLOptions +StdEnvVars
WebAuthExtraRedirect on
AuthType WebAuth
require valid-user
RequestHeader merge REMOTE_USER %{REMOTE_USER}s
RewriteEngine On
RewriteRule .* - [E=REMOTE_USER:%{REMOTE_USER}]
</Location>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
(это же определение VirtualHost в не dockerised веб-приложение работает отлично - то есть, когда я бегу мое веб-приложение под апача с таким же адресом строфы, это работает, и я вижу REMOTE_USER)
И, конечно, я бегу dockerised с веб-приложение
sudo docker run -p 8080:80 mywebapp
Мои сайты определения в dockerised Nginx случае является:
server {
listen 80;
server_name blah.com;
root /home/app/webapp/public;
passenger_enabled on;
passenger_user app;
passenger_app_env development;
passenger_ruby /usr/bin/ruby;
}
любые идеи?