Ubuntu Web 服务器 Nginx 问题

Ubuntu Web 服务器 Nginx 问题

我正在使用 nginx 在 ubuntu 服务器上创建一个网站。我对其进行了设置,以便您访问时会要求输入用户名和密码。我使用了以下命令:

sudo htpasswd -c /etc/nginx/.htpasswd username

然后我运行此命令来更改此文件:

sudo gedit /etc/nginx/sites-enabled/default

这些文件如下所示:

server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;

  root /usr/share/nginx/html;
  index index.php index.html index.htm;

  server_name (put IP address here); # Change this to your FQDN.

  location /munki_repo/ {
    alias /usr/local/munki_repo/;
    autoindex off;
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
  }
}

因此,完成上述操作后,当然还要设置文件/目录。当我进入ipaddress/munki_repoWeb 浏览器并输入正确的用户名和密码时,系统出现以下错误:

403 Forbidden

nginx/1.4.6 (Ubuntu)

你知道我做错了什么吗?这是我第一次使用 nginx。

答案1

核心问题是,如果没有index.html要提供的文件(或相应的try_filesindex指令),NGINX 将尝试执行目录列表,而这在您的配置中是被禁止的(autoindex off;)。

要覆盖此问题,你应该至少执行以下一项两件事情

  1. 在您的专用位置块中使用try_files $uri /index.html指令。这确保不会尝试目录列表,但如果找不到正确的 URI,它将默认为根站点的索引页。

  2. 确保每个位置都有一个ORindex.htm文件(这不适用于将请求传递到后端服务器进行处理的请求)。每个目录都应有一个索引文件,其名称在配置中的指令中列出。index.htmlindex.phpproxy_passfastcgi_passindex

(您自己发现了问题 #2,但这是一个更全面的答复)

答案2

我明白了,我犯了一个错误,没有将 index.html 文件放入目录中,一旦我这样做了,一切都正常了。

相关内容