Nginx用户认证与域名重定向
笔记内容:[*]12.8 Nginx用户认证
[*]12.9 Nginx域名重定向
笔记日期:2017.10.19
12.8 Nginx用户认证
http://i2.51cto.com/images/blog/201712/02/72c5493662a7c0fd754e1a4328ac6a39.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
http://i2.51cto.com/images/blog/201712/02/711c80739bb285211a46625f3153285e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
创建虚拟主机配置文件:
vim /usr/local/nginx/conf/vhost/test.com.conf
文件内容如下:
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;//用户名和密码文件的路径
}
}
http://i2.51cto.com/images/blog/201712/02/cf5eb7ad17511990490b7aa53d82d3b1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
创建test.com目录:
mkdir /data/wwwroot/test.com
创建一个索引页文件:
echo "test.com" > /data/wwwroot/test.com/index.html
安装httpd:
yum install -y httpd
然后使用httpd里的htpasswd 命令去生成一个用户密码文件:
htpasswd -c /usr/local/nginx/conf/htpasswd user1
生成完成后cat一下htpasswd 文件可以看到如下内容:
http://i2.51cto.com/images/blog/201712/02/868890357927b383d5d2453753f39a27.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
如果再次添加用户的话就不需要加上-c选项了,加上-c选项会覆盖原来的htpasswd 文件。
生成完用户密码文件之后,就重新加载配置文件:
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s>
使用curl命令测试一下是否配置成功,状态码为401代表成功:
http://i2.51cto.com/101?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
然后使用-u指定用户名和密码去访问,状态码为200代表成功:
http://i2.51cto.com/images/blog/201712/02/960f365fc5ce0d2f0a1f85c8258e5855.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
以上我们配置的是整个站点的用户认证,但是如果不需要整个站点都要用户认证,只有单独的某个站点下的目录需要进行用户认证,那么如何配置?
示例:
例如我要指定对admin目录进行用户认证,修改虚拟主机配置文件如以下内容即可:
http://i2.51cto.com/images/blog/201712/02/97fcb864a83bbe9c2b7178167b07dafe.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
现在访问test.com就不会需要进行用户认证了,可以看到状态码为200:
http://i2.51cto.com/images/blog/201712/02/771047c6a2ffe282bf4e5f05a3dad167.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
但是访问test.com下的admin目录就会需要进行用户认证了,可以看到状态码为401:
http://i2.51cto.com/images/blog/201712/02/37015b465860264b8e8c12aa76a63f8e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
这时候就需要指定用户名和密码才能访问这个目录了。
除了控制目录外,还可以控制目录下的文件,例如我要控制访问admin.php文件时需要进行用户认证,修改虚拟主机配置文件如以下内容:
http://i2.51cto.com/images/blog/201712/02/a6cc31dbd186e08835c85561d3037e5a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
~ 表示根,表示整个站点
这时候使用curl访问admin目录下的admin.php文件时就需要进行用户认证了,可以看到状态码为401:
http://i2.51cto.com/images/blog/201712/02/5975195cb39754394f23cbc2d46a13a0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
12.9 Nginx域名重定向
http://i2.51cto.com/images/blog/201712/02/8834931e3bbb0fb3caa34907f540c7c5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
修改配置文件为以下内容:
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/$1permanent;
}
}
http://i2.51cto.com/images/blog/201712/02/2e828f60b66b33d535b44638af559206.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
重新加载配置文件:
http://i2.51cto.com/images/blog/201712/02/76fca57043bc7fb2e9c241aa543d6f94.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
使用curl访问test2.com,状态码为301,并且重定向的目标域名是test.com就代表成功了:
http://i2.51cto.com/images/blog/201712/02/7cede10176b649e95aa311c4cddd0316.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
扩展
nginx.conf 配置详解
http://www.ha97.com/5194.html
http://my.oschina.net/duxuefeng/blog/34880
nginx rewrite四种flag
http://www.netingcn.com/nginx-rewrite-flag.html
http://unixman.blog.51cto.com/10163040/1711943
页:
[1]