我正在使用 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_repo
Web 浏览器并输入正确的用户名和密码时,系统出现以下错误:
403 Forbidden
nginx/1.4.6 (Ubuntu)
你知道我做错了什么吗?这是我第一次使用 nginx。
答案1
核心问题是,如果没有index.html
要提供的文件(或相应的try_files
和index
指令),NGINX 将尝试执行目录列表,而这在您的配置中是被禁止的(autoindex off;
)。
要覆盖此问题,你应该至少执行以下一项两件事情:
在您的专用位置块中使用
try_files $uri /index.html
指令。这确保不会尝试目录列表,但如果找不到正确的 URI,它将默认为根站点的索引页。确保每个位置都有一个OR
index.htm
文件(这不适用于将请求传递到后端服务器进行处理的请求)。每个目录都应有一个索引文件,其名称在配置中的指令中列出。index.html
index.php
proxy_pass
fastcgi_pass
index
(您自己发现了问题 #2,但这是一个更全面的答复)
答案2
我明白了,我犯了一个错误,没有将 index.html 文件放入目录中,一旦我这样做了,一切都正常了。