我有一个带有多个 Nginx VHost 的服务器。
根据我对文档的阅读,我是这样设计的:
(...various configs...)
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
# HTTP 444: non standard NGINX specific "drop connection"
server {
listen 80 default_server;
server_name _;
return 444;
}
}
我使用 SSLLabs 测试了服务器本身,结果一切正常,我非常满意。服务器删除了烦人的 wordpress 管理员请求,日志中还提到了其他问题。
然后我决定创建一组简单的页面。
我想在我的主机上有一个包含私有数据但公开 index.html 和公开 mypage.html 和 mypage2.html 的文件夹,因此我locations
在我的 sites-available/host_conf 文件中创建了该文件夹。
server {
listen 443 ssl;
ssl on;
location ~ \.(gif|jpg|png|svg)$ {
root /var/www/images/;
}
server_name host.com www.host.com;
root /var/www/host/main/html/;
location = /folder/mypage.html {
auth_basic "off";
}
location = /folder/mypage2.html {
auth_basic "off";
}
location = /folder/ {
index index.html;
}
location /folder/ {
auth_basic "Acces restreint";
auth_basic_user_file /var/www/host/main/.htpasswd;
}
location / {
index index.html;
try_files $uri $uri/ =404;
}
}
这就是事情变得糟糕的地方:
如果我导航到 host.com,我会得到 200 和页面。很好。
如果我导航到 host.com/folder,我会收到身份验证请求和日志"GET /folder HTTP/1.1" 301 185
,如果我不登录,则会收到 401。
如果我导航到 host.com/mypage.html,我会得到该页面和日志"GET /folder/mypage.html HTTP/1.1" 200 713
。
如果我导航到 host.com/mypage2.html,我会收到失败(无法显示页面)和日志"GET /folder/mypage2.html HTTP/1.1" 444 0 "-"
从那时起,我经历了一段时间的失败。
我应该调查什么?
答案1
我可能通过添加另一个块解决了该问题:
location = /folder/index.html {
auth_basic "off";
}