加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何在nginx中的sublocations中全局使用FastCGI和Basic A

发布时间:2020-12-13 13:56:45 所属栏目:PHP教程 来源:网络整理
导读:我最近部署了我的第一个nginx设置,一切都很好,除了位置解析让我疯了.我有一个简单的php fastcgi设置如下: location ~ .php { if (!-e $request_filename) { return 404; } include /etc/nginx/fastcgi.conf; keepalive_timeout 0; fastcgi_param SCRIPT_FI
我最近部署了我的第一个nginx设置,一切都很好,除了位置解析让我疯了.我有一个简单的php fastcgi设置如下:
location ~ .php {
    if (!-e $request_filename) {
            return 404;
    }

    include /etc/nginx/fastcgi.conf;
    keepalive_timeout 0;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
}

现在我想用基本的auth保护一些位置,如下所示:

location /madmin {
         auth_basic "Restricted";
         auth_basic_user_file /var/www/localhost/admincp/.htpasswd;
 }

有了他的设置,nginx在转到/ madmin时要求输入密码,但不会在/madmin/foo.php上询问.如果我将auth位置更改为“location~ ^ / madmin”,那么nginx会提供php文件供下载…

是不是可以在nginx中配置多个位置?如果没有,这里的解决方法是什么?

谢谢你的帮助.

有关nginx如何处理请求(包括位置)的说明,请参阅 http://nginx.org/en/docs/http/request_processing.html.维基文档也有一些很好的例子.不幸的是,最有可能的是你想要的当前未记录的功能.

如前所述,只有一个位置在NginX中获胜;但是,您可能不知道nginx支持位置内的位置.所以你的位置策略实际上可能就像这个示例服务器(0.8.31中的fastcgi.conf):

upstream my-backend {
  localhost:9000;
}
server {
  listen 80;
  server_name my-awesome-php.site;
  root /path/to/root;
  # The protected location
  location /protected {
    auth_basic "Give me codes.";
    auth_basic_user_file /path/to/.htpasswd;
    location ~ .php${
      include fastcgi.conf;
      fastcgi_pass my-backend;
    }
  }      

  # Normal files (blank location is OK,just means serve from root)
  location / {
  }
  # PHP for normal stuff
  location ~ .php${
    include fastcgi.conf;
    fastcgi_pass my-backend;
  } 

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读