Angularjs 如果目录存在,nginx给出403

Angularjs 如果目录存在,nginx给出403,angularjs,nginx,server,Angularjs,Nginx,Server,我有下面的配置应该可以工作,但是如果url路径中存在目录,我仍然会得到403 例如:domainname.com/users 如果用户目录存在,我会得到403,而不是加载index.html server { listen 80; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; server_name www.domainname.com; ret

我有下面的配置应该可以工作,但是如果url路径中存在目录,我仍然会得到403

例如:domainname.com/users

如果用户目录存在,我会得到403,而不是加载index.html

server {
    listen  80;

    access_log  /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;

    server_name www.domainname.com;
    return 301 https://www.domainname.com$request_uri;
    root /usr/share/nginx/dist/;
    index  index.html;

    location / {
      autoindex off;
      try_files $uri /index.html =404;
    }


    # these settings are from https://github.com/h5bp/server-configs-nginx/blob/master/h5bp/location/expires.conf
    # feel free to change as much as you like
    # cache.appcache, your document html and data
    location ~* \.(?:manifest|appcache|html?|xml|json)$ {
      expires -1;
      access_log logs/static.log;
    }

    # Feed
    location ~* \.(?:rss|atom)$ {
      expires 1h;
      add_header Cache-Control "public";
    }

    # Media: images, icons, video, audio, HTC
    location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
      expires 1M;
      access_log off;
      add_header Cache-Control "public";
    }

    # CSS and Javascript
    location ~* \.(?:css|js)$ {
      expires 1y;
      access_log off;
      add_header Cache-Control "public";
    }
}

我认为您需要在try_文件中指定$url/以测试在缺少尾随/时是否存在目录:

try_files $uri $url/ /index.html =404;

当存在匹配目录时,这应该遵守您的index指令。

问题是我有$uri/in'/etc/nginx/sites available/default',只需要删除它。

运行nginx的用户可以使用当前权限访问domainname.com的根目录吗?对于根目录中的/users/文件夹和其中的任何文件,也有相同的问题。是的,运行nginx的用户可以使用当前权限访问domainname.com的根目录和/users目录,并且一切正常,唯一的问题是当目录名与输入的路由冲突时…并且您没有处理符号链接,对吗?不,我没有任何符号链接