linux中Nginx设置目录密码保护3种方法

当不允许公开访问时一些网站路径时,比如网站后台密码,我们给利用Web服务器给路径加密认证,只用输入正确的用户名和密码才能进去访问。Apache有这样的功能,Nginx也可以。下面简单介绍Nginx给某些路径加密。

生成密码

方法一、用 Apache 的 htpasswd 工具来创建用户密码文件

使用htpasswd的前提是你已经安装apache。

# htpasswd -b -c filename username passwd
Adding password for user ******

filename为创建好的文件,把这个文件放在无法通过WEB路径访问的目录下,在Nginx配置文件中给出这个文件的绝对路径地址 。username为用户名,passwd为密码。

方法二、使用perl 创建密码

考虑到安装了Nginx的用户未必安装Apache(httpd),如果只是为了生成个密码安装它,也未免有点大材小用。下面介绍用perl程序来生成密码。

创建程序:

# vim genpwd.pl

写入如下内容:

#!/usr/bin/perl
use strict;
my $genpwd=$ARGV[0];
print crypt($genpwd,$genpwd)."\n";

给予可执行权限:

# chmod u+x genpwd.pl

生成密码:

# ./genpwd.pl password
papAq5PwY/QQM

把输出的密码写入到一个密码文件中,格式如下:

用户名:加密生成的密码
一行一个账户。
方法三:在线生成
使用开源中国社区提供的在线工具生成,比较方便。点击这里跳转

 
设置Nginx

如果使用了多域名虚拟主机配置对某个目录进行加密时,修改配置文件:
 
location / {
    root   /data/www/domain.com;
    index  index.php index.html index.htm;
 try_files $uri $uri/ /index.php?q=$uri&$args;
 
 location ~ ^/demo/book/.* {
   autoindex on;
   autoindex_exact_size off;
   autoindex_localtime on;
   charset utf-8,gbk,big5;
          auth_basic "Password Needed";
   auth_basic_user_file /usr/local/nginx/vhosts/auth/authuser;
       }      
     }
“location ~ ^/demo/book/.* {…}”这样子可以禁止未使用密码时直接访问该目录下的文件,达到我们想要的效果。

时间: 2024-12-03 10:20:33

linux中Nginx设置目录密码保护3种方法的相关文章

linux中安装mysql数据库的2种方法

编译安装mysql 安装前准备 如果mysql用户不存在,那么添加mysql用户 groupadd mysql useradd -g mysql mysql mysql编译安装 wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.70.tar.gz tar -zxvf mysql-5.1.70.tar.gz cd mysql-5.1.70 yum install ncurses ncurses-devel ./configur

Linux中执行shell脚本的4种方法总结_linux shell

bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应找到不到hello.sh的错误信息.因为目前的工作目录(/data/shell)可能不在

linux中crontab每秒执行任务的几种方法

第一种方法: 1.创建脚本文件  代码如下 复制代码 cat phplog.sh 2.编辑脚本内容 #!/bin/bash while : ;do /home/scripts.sh 2>/dev/null & sleep 1 done 注意:第一次运行时请不要使用bash phplog.sh & 这种后台运行的方式,它会僵死的. 解决:可以把它放到计划任务使其运行,然后将计划任务中的此条目删除即可.最后把这个脚本放到/etc/rc.local让它每次开机都可以被运行. 第二种方法:

Linux中Nginx设置proxy_cache缓存与取消缓存

在配置文件的server{}内,添加这么一句即可:  代码如下 复制代码 location ~ .*/.(css|js)$ {     add_header Cache-Control 'no-store'; } 在nginx.conf里的http块加入以下代码 #proxy_temp_path和proxy_cache_path指定的路径必须在同一分区 proxy_temp_path   /tmp/proxy_temp_dir; #设置名称为nginx_cache,内存缓存空间大小为500MB,

linux中nginx日志分析利器GoAccess使用方法

面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了. 对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快.满足这三点的goaccess确实是居家必备良药. 话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的.你也可以用它来分析apa

Linux中Kill掉进程的10种方法

  常规篇: 首先,用ps查看进程,方法如下: 代码如下: $ ps -ef -- smx 1822 1 0 11:38 ? 00:00:49 gnome-terminal smx 1823 1822 0 11:38 ? 00:00:00 gnome-pty-helper smx 1824 1822 0 11:38 pts/0 00:00:02 bash smx 1827 1 4 11:38 ? 00:26:28 /usr/lib/firefox-3.6.18/firefox-bin smx 1

linux中获取系统时间的几种方法

  asctime(将时间和日期以字符串格式表示)   相关函数 time,ctime,gmtime,localtime 表头文件 #include<time.h> 定义函数 char * asctime(const struct tm * timeptr); 函数说明 asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回. 此函数已经由时区转换成当地时间,字符串格式为:"Wed Jun 30 21:49:08

linux中Nginx+FastCGI+PHP 开启PHPINFO完美方法

 代码如下 复制代码 location ~ ^.+\.php {             root          D:/workspace;             fastcgi_pass   bakend;             fastcgi_index  index.php;             # 关键在这里             set $real_script_name $fastcgi_script_name;             if ($fastcgi_scr

如何限制SSH用户访问Linux中指定的目录

将 SSH 用户会话限制访问到特定的目录内,特别是在 web 服务器上,这样做有多个原因,但最显而易见的是为了系统安全.为了锁定 SSH 用户在某个目录,我们可以使用 chroot 机制. 在诸如 Linux 之类的类 Unix 系统中更改 root(chroot)是将特定用户操作与其他 Linux 系统分离的一种手段;使用称为 chrooted 监狱 的新根目录更改当前运行的用户进程及其子进程的明显根目录. 在本教程中,我们将向你展示如何限制 SSH 用户访问 Linux 中指定的目录.注意,