Nginx 403即使在设置权限后仍被禁止

jdzmm42g  于 2022-11-02  发布在  Nginx
关注(0)|答案(2)|浏览(233)

我想为我的域获取Letsencrpyt SSL。过程的一部分是,网站需要在获得证书之前进行授权。
我创建了文件夹./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

我还在/.well-known文件夹中创建了一个working.html文件,并加载了example.com/.well-known/working.html,我得到了相同的403禁止。
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;
   }
 }
uelo1irk

uelo1irk1#

如果您不使用别名,您的程式码也可以运作。
试试看:

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

g9icjywg

g9icjywg2#

我试过了,但无法解决这个问题。我认为certbot没有获取正确的位置,可能正在将挑战写入其他位置。我有一个脚本监视acme challenge目录,但没有在那里创建任何内容。使用webroot选项结束。

certbot certonly -d example.com -a webroot

它提示输入webroot位置,但这只是第一次提示-不是提示更新,它允许自动更新。它可能没有certonly选项,但我没有尝试它。我用cert位置手动更新了NGINX配置。

相关问题