nginx - 仅在主页上设置基本身份验证 nginx
问题描述
我有以下配置。我只想授权/
,因为唯一一个有 UI 的。其他 URL 已经是 api,如、/report/
等。/group/
/delete/
upstream gofastdfs{
server localhost:8081;
keepalive 32;
}
server {
listen 8080;
server_name localhost;
gzip on;
gzip_types '*';
location / {
auth_basic "Caution";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
keepalive_timeout 620;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://gofastdfs;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
但是我的配置授权每个 URL,我只想限制/
解决方案
location /
匹配任何其他块未处理的 URI location
- 即它是默认值location
。
location = /
仅匹配单个 URI /
。
有关详细信息,请参阅此文档。
您可以将您的配置拆分为两个location
块,一个带有身份验证,另一个不带有身份验证。有些语句需要在两个location
块之间复制,但大多数可以移动到外部上下文中。
例如:
keepalive_timeout 620;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
location = / {
auth_basic "Caution";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
proxy_pass http://gofastdfs;
}
location / {
proxy_pass http://gofastdfs;
}
推荐阅读
- angular - Angular Rxjs 多个并行 HTTP 请求/调用阻塞导航 - 优先取消队列并发
- postgresql - 如何从 .txt.gz 文件恢复 postgresql 数据库?
- php - 如何修复'预期类型'Psr\Http\Message\RequestInterface'。在 php laravel 中发现“GuzzleHttp\Psr7\Request”错误?
- xcode - 将 ObservedObject 传递给嵌套子视图 SwiftUI(SwiftUI 数据流)
- c++ - 为什么从不同的“基础”调用 getter 和 setter?
- windows - 批量编码嵌套循环问题
- google-chrome - 谷歌 chrome 在 mac 上停止自动升级
- javascript - 在“rxjs”中找不到导出“分区”
- r - 位置 = 'fill' 的 Geom_bar,hlines 表示平均值
- swift - 在 Swift 4 项目中使用 Swift 5 库