十二周二次课(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,
重定向到(最后一行):