2017-01-02 6 views
1

Я хочу получить Letsencrpyt SSL для своего домена. Часть процесса заключается в том, что сайт должен быть авторизирован до получения сертификата.Nginx 403 Запрещено даже после установки разрешения

Я создал папку ./well-known и выполнил команду, которую меня попросили, и я получил;

Nginx 403 forbidden. 

Я на Nginx/1.10.0 (Ubuntu)

Я chown каталог и предоставил ему 755 еще до сих пор то же самое. Ознакомьтесь с разрешениями в моем каталоге ниже.

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 

Я также создал working.html файл в папке /.well-known и загружает example.com/.well-known/working.html, я получил те же 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

Вы перезапустили сервер? 'systemctl restart nginx' или аналогичная команда? – Raito

+0

Да много раз – YoYo

ответ

1

Ваш код будет работать, если вы не используете псевдоним.

Попробуйте это:

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

или это:

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

Когда сглаживание, то^требуется.

Это специфическое поведение Nginx, соответствующее тому, как они выполняют сопоставление. Существует подробная запись здесь о совпадении логики и оговорках, это запутывает: https://github.com/letsencrypt/acme-spec/issues/221

+0

Пробовал, и я получаю 404 не найден. – YoYo

+0

Когда я нахожу example.com/.well-known/working.html/, я получу 404 не найденных. Когда я нахожусь в example.com/.well-known/, я получу 403 Forbidden. – YoYo

+0

Можете ли вы попробовать перекопать все ваши каталоги веб-серверов пользователю nginx только для проверки. Должно быть www-data – dank