十二周二次课(3月13日)

12.6 Nginx安装

12.7 默认虚拟主机

12.8 Nginx用户认证

12.9 Nginx域名重定向

12.6 Nginx安装

  • 下载和解压:

cd /usr/local/src

wget http://nginx.org/download/nginx-1.13.9.tar.gz

tar -zxvf nginx-1.13.9.tar.gz

  • 配置编译选项

cd nginx-1.13.9

./configure --prefix=/usr/local/nginx

  • 编译和安装

make &&  make install

  • 创建配置文件和启动脚本

vim /etc/init.d/nginx

chmod 755 /etc/init.d/nginx

chkconfig --add nginx

chkconfig nginx on

  • 更改配置文件

cd /usr/local/nginx/conf

mv nginx.conf nginx.conf.1 //不用系统自带的,我们自己建立以新的。也可以清空原来的配置文件,用命令:>/usr/local/nginx/conf/nginx.conf

vim nginx.conf

  • 启动

service nginx start

  • 测试

curl localhost

能访问到时因为在配置文件 nginx.conf里默认主机页里,设置了如下的设置

  • 测试php解析

我们在配置文件里也配置了解析php:

vi /usr/local/nginx/html/1.php //加入如下内容

<?php

echo "This is nginx test page.";

?>

12.7 默认虚拟主机

在nginx中也又默认虚拟主机,跟httpd类似,第一个被nginx加载的虚拟主机就是默认主机。但和httpd不相同的地方时,它还有一个配置用来标记默认虚拟主机。也就是说,如果没有这个标记,第一个虚拟主机为默认虚拟主机。

修改主配置文件:vim /usr/local/nginx/conf/nginx.conf //注释掉server。在结束符号 } 上面增加一行:include vhost/*.conf; 。

这样/usr/local/nginx/conf/vhost/下面所有以.conf结尾的文件都会加载。我们就可以包所有虚拟主机配置文件放到vhost目录下面

vhost目录在conf目录下,如果没有就创建一个,

vim aaa.com.conf //编辑虚拟主机aaa.com配置文件

server

{

   listen 80 default_server; // 有这个标记的就是默认虚拟主机

   server_name aaa.com; //主机名

   index index.html index.htm index.php; //指定索引页

   root /data/wwwroot/default; //网址的路径

}

测试:

mkdir -p /data/wwwroot/default/ //创建default目录

echo “This is a default site.”>/data/wwwroot/default/index.html //定义index.html

/usr/local/nginx/sbin/nginx –t //检查语法错误

/usr/local/nginx/sbin/nginx -s reload //重新加载服务,好处是当配置文件里有错误时是不会生效的

12.8 Nginx用户认证

  • 访问网站时需要认证:

创建一个虚拟主机: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; //用户名密码文件所在位置

}

}

要用到apache的htpasswd文件来创建用户名密码文件

/usr/local/apache2.4/bin/htpasswd -c /usr/local/nginx/conf/htpasswd aming

创建第二个:/usr/local/apache2.4/bin/htpasswd /usr/local/nginx/conf/htpasswd user1

-t && -s reload //测试配置并重新加载

测试:

curl -x127.0.0.1:80 test.com -I //状态码为401,说明访问的内容需要用户认证

curl -x127.0.0.1:80 -uaming:123456 test.com //状态码404,因为没有创建index.html

创建目录:mkdir /data/wwwroot/test.com

创建index.html:echo “test.com”>/data/wwwroot/test.com/index.html

  • 访问目录时需要认证:目录名admin

vim /usr/local/nginx/conf/vhost/test.com.conf //编辑test.com.conf

server

{

   listen 80;

   server_name test.com;

   index index.html index.htm index.php;

   root /data/wwwroot/test.com;

   location  /admin/ //更改目录名字为admin

   {

       auth_basic              "Auth";

       auth_basic_user_file   /usr/local/nginx/conf/htpasswd;

   }

}

访问网站时,不需要指定用户名和密码

访问admin目录时,需要用户名和密码

创建admin目录:mkdir /data/wwwroot/test.com/admin

创建admin目录下的index.htm:echo “test.com admin dir”>/data/wwwroot/test.com/admin/index.html

  • 访问文件时需要认证:文件名admin,php

vim /usr/local/nginx/conf/vhost/test.com.conf //编辑test.com.conf

server

{

   listen 80;

   server_name test.com;

   index index.html index.htm index.php;

   root /data/wwwroot/test.com;

   location  ~ admin.php //~:匹配,匹配admin.php

   {

       auth_basic              "Auth";

       auth_basic_user_file   /usr/local/nginx/conf/htpasswd;

   }

}

访问目录时,不需要指定用户名和密码

访问文件时,需要指定用户名和密码

12.9 Nginx域名重定向

Nginx的域名重定向和httpd的类似

更改配置文件:vim /usr/local/nginx/conf/vhost/test.com.conf

server

{

   listen 80;

   server_name test.com test1.com test2.com; // server_name后面支持写多个域名。httpd:ServerName后面只有1个域名,ServerAlias后面跟多个域名,

   index index.html index.htm index.php;

   root /data/wwwroot/test.com;

   if ($host != 'test.com' ) {

       rewrite  ^/(.*)$  http://test.com/$1  permanent; permanent为永久重定向,状态码为301,如果写redirect则为302

   }

}

测试:

查看状态码:301,

重定向到(最后一行):