2017-06-13 126 views
0

我在使用letsencrypt证书续订时遇到问题。 为什么我跑certbot renew --dry-run,那么更新失败,返回一个404Letsencrypt nginx,续订返回404

见下面我nginx的配置(神社temlate)网站 。 {{ ssl_challenge_dir }} 变量是当我最初生成 证书时用于--webroot-path的一个变量。

如果我把与虚拟内容的文件中{{ ssl_challenge_dir }}/.well-known/acme-challenge/test.html,那么该文件是完全 服务不提高404。

所以我有点困惑。据我了解,当certbot运行时,它会在同一目录下创建一个 临时文件,然后尝试请求它。但它 总是返回404.

任何人都知道我在做什么错在这里?

server_tokens off; 
more_set_headers 'Server: '; 

# Letsencrypt and SSL Redirect 
server { 
    listen 80; 
    server_name {{ site.domain }} {{ site.name }}; 

    # Letsencrypt challange 
    location /.well-known/acme-challenge/ { 
     root {{ site.ssl_challenge_dir }}; 
     allow all; 
     try_files $uri $uri/ =404; 
    } 

    # Redirect all other requests to https 
    location/{ 
     return 301 https://{{ site.name }}$request_uri; 
     rewrite ^/(.*) https://{{ site.name }}/$1 permanent; 
    } 
} 

server { 
    server_name {{ site.name }}; 
    listen 443; 
    access_log {{ user.logs_dir }}/nginx_access.log; 
    error_log {{ user.logs_dir }}/nginx_error.log; 

    client_max_body_size 10M; 
    gzip on; 
    gzip_types text/plain image/png image/jpg; 

    ssl on; 
    ssl_session_cache shared:SSL:10m; 
    ssl_session_timeout 10m; 
    ssl_certificate /etc/letsencrypt/live/{{ site.name }}/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/{{ site.name }}/privkey.pem; 

    # Resources 
    location ^~ /media/ { 
     root {{ webapp.resources_dir }}; 
     expires 31d; 
     gzip_static on; 
    } 

    location ^~ /static/ { 
     root {{ webapp.resources_dir }}; 
     expires 0; 
     gzip_static on; 
    } 

    location/{ 
     {% if site.auth_required %} 
     auth_basic "Restricted"; 
     auth_basic_user_file {{ user.home_dir }}/.htpasswd; 
     {% endif %} 

     proxy_pass http://unix:{{ webapp.socket }}:; 
     # proxy_pass_header Server; 

     proxy_set_header Host $http_host; 
     proxy_redirect off; 

     proxy_connect_timeout 600; 
     proxy_send_timeout 600; 
     proxy_read_timeout 600; 
     send_timeout 600; 

     proxy_set_header X-Scheme $scheme; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header X-Forwarded-Protocol ssl; 
    } 
} 

回答

0

好吧,我发现我做错了。我的nginx配置没有问题。

我的问题是,我用--webroot运行certbot时获得原始证书,基本上只是没有意识到,renew命令还需要与--webroot

运行