首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Letsencrypt nginx,renew返回404

Letsencrypt nginx,renew返回404
EN

Stack Overflow用户
提问于 2017-06-13 18:45:22
回答 0查看 1.7K关注 0票数 1

我在letsencrypt证书续订时遇到问题。为什么我运行certbot renew --dry-run,然后续订失败,站点返回404。

请看我下面的nginx配置(jinja temlate)。{{ ssl_challenge_dir }}变量与我最初生成证书时用于--webroot-path的变量相同。

如果我把一个包含虚拟内容的文件放在{{ ssl_challenge_dir }}/.well-known/acme-challenge/test.html中,那么这个文件就可以完美地被服务了,而不会引发404。

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

有人知道我哪里做错了吗?

代码语言:javascript
复制
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;
    }
}
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44519305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档