【问题标题】:Nginx 403 Forbidden Even After Setting The Permission即使设置了权限,Nginx 403 也被禁止
【发布时间】:2017-05-16 12:52:40
【问题描述】:

我想为我的域获取 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 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;
   }
 }

【问题讨论】:

  • 你重启服务器了吗? systemctl restart nginx 或类似命令?
  • 是的,多次

标签: django ubuntu nginx lets-encrypt


【解决方案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

【讨论】:

  • 试过了,我得到 404 not found.
  • 当我访问 example.com/.well-known/working.html/ 我会得到 404 not Found。当我访问 example.com/.well-known/ 时,我会收到 403 Forbidden。
  • 您可以尝试将您所有的网络服务器目录分配给 nginx 用户来进行测试。应该是 www-data
  • 我已经开始工作了!我使用了这个位置 ^~ /.well-known { allow all; auth_basic 关闭;别名 /path/to/.well-known/; } 你能把它作为答案发布,我会为你标记它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2020-07-07
  • 1970-01-01
  • 2021-10-26
  • 2015-12-30
  • 2019-02-01
  • 2013-09-18
相关资源
最近更新 更多