2016-06-11 77 views
1

,所以我一個過渡軌道基於網站泊塢窗爲它的緣故)沒有得到在軌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; 
} 

有什麼想法?

回答

1

可能是一個遲到的答案,但希望它會對其他人有用。

將REMOTE_USER更改爲HTTP_REMOTE_USER爲我工作。

有關更多詳細信息,我找到this答案清除。

相關問題