2017-01-02 3 views
1

Ich möchte Letsencrpyt SSL für meine Domäne erhalten. Teil des Prozesses ist, dass die Website autorisiert werden muss, bevor das Zertifikat abgerufen wird.Nginx 403 verboten, auch nach dem Festlegen der Berechtigung

Ich erstellte den Ordner ./well-known und lief den Befehl, den ich gefragt wurde und ich bekam;

Nginx 403 forbidden. 

ich auf nginx/1.10.0 bin (Ubuntu)

chown ich das Verzeichnis und gewährt es 755 noch immer noch die gleichen. Überprüfen Sie die Berechtigungen in meinem Verzeichnis unten.

namei -l /var/www/example.com/.well-known      

f: /var/www/example.com/.well-known 
drwxr-xr-x root root/
drwxr-xr-x root root var 
drwxr-xr-x root root www 
drwxr-xr-x cman sudo example.com 
drwxr-xr-x cman sudo .well-known 

Ich habe auch eine working.html Datei im Ordner /.well-known und ich laden example.com/.well-known/working.html, bekam ich die gleiche 403 Forbidden.

nginx.conf

upstream kip_app_server { 
    # fail_timeout=0 means we always retry an upstream even if it failed 
    # to return a good HTTP response (in case the Gunicorn master nukes a 
    # single worker for timing out). 

    server unix:/var/www/example.com/src/run/trav.sock fail_timeout=0; 
} 

server { 
     listen 80; 
     server_name example.com www.example.com; 

location = /favicon.ico { access_log off; log_not_found off; } 
access_log /var/www/example.com/logs/access.log; 
error_log /var/www/example.com/logs/nerror.log; 

charset utf-8; 

client_max_body_size 75M; 

    location /static/ { 
     alias /var/www/example.com/src/static/; 
    } 

    location /media/ { 
     alias var/www/example.com/src/media/; 
    } 

    location ~ /\.well-known { 
     allow all; 
     alias /var/www/example.com/.well-known/; 
    } 


    location/{ 
     include proxy_params; 
     proxy_pass http://kip_app_server; 
     #proxy_set_header X-Forwarded-Host $server_name; 
     #proxy_set_header X-Real-IP $remote_addr; 
    } 
} 
+0

Haben Sie den Server neu gestartet? 'systemctl restart nginx' oder ähnlicher Befehl? – Raito

+0

ja mehrmals – YoYo

Antwort

1

Ihr Code würde funktionieren, wenn Sie nicht einen Alias ​​verwendet wurden.

Versuchen Sie folgendes:

location ^~ /.well-known { 
    allow all; 
    alias /var/www/example.com/.well-known/; 
} 

oder dies:

location ^~ /.well-known { 
    allow all; 
    auth_basic off; 
    alias /path/to/.well-known/; 
} 

Wenn Aliasing, die^erforderlich ist.

Dies ist Nginx spezifisches Verhalten, auf die Art, wie sie übereinstimmen. Es gibt eine detaillierte Beschreibung hier über passende Logik und Vorbehalte, es ist verwirrend: https://github.com/letsencrypt/acme-spec/issues/221

+0

Versuchte es und ich bekomme 404 nicht gefunden. – YoYo

+0

Wenn ich example.com/.well-known/working.html/ besuchen werde ich 404 nicht gefunden bekommen. Wenn ich example.com/.well-known/ besuche, werde ich 403 Verboten bekommen. – YoYo

+0

Können Sie versuchen, alle Ihre Webserver-Verzeichnisse zum nginx-Benutzer zu chillen, nur um zu testen. Sollte www-Daten sein – dank