2016-08-07 30 views
0

Ich laufe in ein Problem zu ermöglichen, in denen bestimmte URLs in meine Elastic Beanstalk-Umgebung übergeben werden Schrägstriche innerhalb der URL-Parameter enthalten, zB:Wie für codierte Schrägstriche in einem Elastic Beanstalk Load Balancer Umgebung

https://example.com/param1=this/that/param2= ....

Diese URLs sind in dem Kontext gültig, in dem meine Anwendung die Schrägstriche im lokalen Test korrekt verarbeiten kann. In der Produktion auf EB dekodiert der Apache-Server, den EB als Standard verwendet, die Schrägstriche, wodurch 404 an den Benutzer zurückgegeben werden. Ich bin nicht sehr auf dem Laufenden mit meinem Apache-Wissen. Was ist der beste und effizienteste Weg, um das Argument: AllowEncodedSlashes NoDecode in meinen Apache-Konfigurationen dynamisch auf Environment-Start zu setzen?

Offensichtlich ssh-in meine Instanzen, um die Änderung zu machen, ist weit von ideal und dauert nicht nach einem Neuladen. Ist es möglich, es mit meinen Anwendungen .expextensions in irgendeiner Weise zu setzen?

EDIT:

einige weitere Details zu geben, ich bin ein Lastenausgleich EB-Umgebung, die HTTPS verwendet und eine Django-Anwendung ausgeführt wird (mit mod_wsgi)

Das ist mein wsgi.conf Datei von einer meiner Instanzen genommen:

LoadModule wsgi_module modules/mod_wsgi.so 
WSGIPythonHome /opt/python/run/baselinenv 
WSGISocketPrefix run/wsgi 
WSGIRestrictEmbedded On 

<VirtualHost *:80> 

Alias /static/ /opt/python/current/app/static/ 
<Directory /opt/python/current/app/static/> 
Order allow,deny 
Allow from all 
</Directory> 


WSGIScriptAlias//opt/python/current/app/test_app/wsgi.py 

AllowEncodedSlashes NoDecode 

<Directory /opt/python/current/app/> 
    Require all granted 
</Directory> 

WSGIDaemonProcess wsgi processes=1 threads=15 display-name=%{GROUP} \ 
    python-path=/opt/python/current/app:/opt/python/run/venv/lib64/python3.4/site-packages:/opt/python/run/venv/lib/python3.4/site-packages user=wsgi group=wsgi \ 
    home=/opt/python/current/app 
WSGIProcessGroup wsgi 
</VirtualHost> 

LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b  \"%{Referer}i\" \"%{User-Agent}i\"" combined 

Ist das die Datei, die ich bearbeiten muss? Würde die EB-Umgebung nicht meine Änderungen bei einem Neustart der Umgebung überschreiben?

+0

Mögliche Duplikat [Configure Apache auf elastischen Bohnenstengel] (http://stackoverflow.com/questions/21878024/configure-apache-on-elastic-beanstalk) –

Antwort

0

Überprüfen Sie unten Beispielkonfiguration für Apache, um auf die codierten Schrägstriche aufzupassen. Denken Sie daran, dies ist nur ein Beispiel. Sie müssen Ihren Apache-Code manipulieren, indem Sie auf den unten stehenden Code verweisen, da Sie Ihre Apache-Host-Datei nicht in Ihre Frage eingefügt haben.

<VirtualHost *:80> 
    <Proxy *> 
    Order deny,allow 
    Allow from all 
    </Proxy> 

    ProxyPass/http://localhost:8080/ retry=0 
    ProxyPassReverse/http://localhost:8080/ 
    ProxyPreserveHost on 
    AllowEncodedSlashes NoDecode 
    LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" 
    ErrorLog /var/log/httpd/elasticbeanstalk-error_log 
    TransferLog /var/log/httpd/elasticbeanstalk-access_log 
</VirtualHost> 
+0

Meine Frage ist, wie effizient diese ich machen Änderungen? Ersetze ich die Datei wsgi.conf in meiner EB-Instanz durch eine ähnliche Version davon? – GreenGodot

+0

Fügen Sie diesen ProxyPreserveHost oberhalb der Zeile AllowEncodedSlashes hinzu – error2007s