,所以我一個過渡軌道基於網站泊塢窗爲它的緣故)沒有得到在軌REMOTE_USER頭應用程序上運行的客運W/nginx的背後阿帕奇
我使用phusion/passenger-docker支持我的Rails應用程序。在它內部,我使用了rack-webauth,它爲WEBAUTH_USER或REMOTE_USER獲取驗證片段。不幸的是,我只能使用Stanford的Webauth的Apache版本來進行身份驗證;所以我不能(當前)爲此使用nginx實例。
因此,我在Apache實例中使用ProxyPass
將流量轉發到我的dockerised nginx的應用程序。該應用程序適用於我的應用程序的未經身份驗證的部分;然而,在我進行身份驗證後,我現在的dockerised應用程序似乎看不到REMOTE_USER環境變量(通過我的ruby代碼中的puts env
)。
我的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>
(在非dockerised web應用此相同的虛擬主機定義工作正常 - 即當我下運行Apache我的web應用程序使用相同的位置節,它的工作原理,我看到了REMOTE_USER )
,當然我用運行在Nginx的dockerised例如
sudo docker run -p 8080:80 mywebapp
我的網站定義dockerised Web應用程序是:
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;
}
有什麼想法?