Ich habe meinen Nginx-Server wie folgt eingerichtet:
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
server_name example.com;
... other things down here..
}
Wie kann ich Verzeichnisse von SSL ausschließen? Beispielsweise habe ich unter /static/tour eine Tour, die die Webanwendung erklärt, und diese muss nicht verschlüsselt werden.
Betriebssystem: Ubuntu 10.04
Antwort1
Ich denke, Sie sollten entweder eine andere Serverkonfiguration einrichten, die auf Port 80 lauscht und auf dasselbe Dokumentstammverzeichnis verweist (und sicherstellen, dass die App je nach aufgerufener URL entweder SSL oder Nicht-SSL erzwingt, sodass der Benutzer nicht einfach das „S“ aus HTTPS löschen kann), oder etwas wie das Folgende verwenden:http://ariejan.net/2011/10/22/automatically-switch-between-ssl-and-non-ssl-with-nginx-unicorn-rails
Antwort2
Dies ist nicht möglich. Eine SSL-Anforderung ist verschlüsselt, was bedeutet, dass der Server nicht einmal erkennen kann, wie die URI aussieht, bis er die Anforderung entschlüsselt hat. Es gibt keine Möglichkeit, dem Client mitzuteilen, dass er Anforderungen für ein bestimmtes Unterverzeichnis mit einem Nicht-SSL-Protokoll senden soll.
Wie Demelziraptor sagte, können Sie zwei virtuelle Hosts einrichten, einen mit SSL auf Port 443 und einen ohne SSL auf Port 80.
Sie können problemlos Umschreiberegeln einrichten, sodass jede Anforderung /static/tour
auf dem SSL-Vhost eine Umleitung auf dieselbe Seite auf dem Nicht-SSL-Vhost bewirkt und umgekehrt auf dem Nicht-SSL-Vhost eine Umleitung zurück zum SSL-Vhost.