笔记内容:php
笔记日期:2017.10.19html
<br>nginx
建立虚拟主机配置文件:vim
vim /usr/local/nginx/conf/vhost/test.com.confcurl
文件内容以下:ide
server { listen 80; server_name test.com; index index.html index.htm index.php; root /data/wwwroot/test.com; location / { auth_basic "Auth"; //定义用户认证的名称 auth_basic_user_file /usr/local/nginx/conf/htpasswd; //用户名和密码文件的路径 } }
建立test.com目录:测试
mkdir /data/wwwroot/test.comurl
建立一个索引页文件:.net
echo "test.com" > /data/wwwroot/test.com/index.html3d
安装httpd:
yum install -y httpd
而后使用httpd里的htpasswd 命令去生成一个用户密码文件:
htpasswd -c /usr/local/nginx/conf/htpasswd user1
生成完成后cat一下htpasswd 文件能够看到以下内容:
若是再次添加用户的话就不须要加上-c选项了,加上-c选项会覆盖原来的htpasswd 文件。
生成完用户密码文件以后,就从新加载配置文件:
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
使用curl命令测试一下是否配置成功,状态码为401表明成功:
而后使用-u指定用户名和密码去访问,状态码为200表明成功:
以上咱们配置的是整个站点的用户认证,可是若是不须要整个站点都要用户认证,只有单独的某个站点下的目录须要进行用户认证,那么如何配置?
示例:
例如我要指定对admin目录进行用户认证,修改虚拟主机配置文件如如下内容便可:
如今访问test.com就不会须要进行用户认证了,能够看到状态码为200:
可是访问test.com下的admin目录就会须要进行用户认证了,能够看到状态码为401:
这时候就须要指定用户名和密码才能访问这个目录了。
<br>
除了控制目录外,还能够控制目录下的文件,例如我要控制访问admin.php文件时须要进行用户认证,修改虚拟主机配置文件如如下内容:
~ 表示根,表示整个站点
这时候使用curl访问admin目录下的admin.php文件时就须要进行用户认证了,能够看到状态码为401:
<br>
修改配置文件为如下内容:
server { listen 80; server_name test.com test1.com test2.com; index index.html index.htm index.php; root /data/wwwroot/test.com; if ($host != 'test.com' ) { rewrite ^/(.*)$ http://test.com/$1 permanent; } }
从新加载配置文件:
使用curl访问test2.com,状态码为301,而且重定向的目标域名是test.com就表明成功了:
<br>
nginx.conf 配置详解
http://www.ha97.com/5194.html
http://my.oschina.net/duxuefeng/blog/34880
<br>
nginx rewrite四种flag
http://www.netingcn.com/nginx-rewrite-flag.html
http://unixman.blog.51cto.com/10163040/1711943