一、Nginx安装
进入src目录下载源码包并解压:
cd /usr/local/src
wget http://nginx.org/download/nginx-1.12.1.tar.gz
tar zxf nginx-1.12.1.tar.gz
进入nginx-1.12.1目录编译并安装nginx:
./configure --prefix=/usr/local/nginx
make && make install
创建配置文件并做成启动脚本,复制如下内容(参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx )
vim /etc/init.d/nginx
更改一下权限:
chmod 755 /etc/init.d/nginx
添加进开机启动项:
chkconfig --add nginx
chkconfig nginx on
修改配置文件:
进入nginx配置文件目录,将原nginx.conf 文件备份,命名为后缀.bak:
cd /usr/local/nginx/conf/
mv nginx.conf nginx.conf.bak
新建并添加如下内容到配置文件中:
写入如下内容(参考 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf )
vim nginx.conf
检查配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
启动nginx服务并端口是否启动:
/etc/init.d/nginx start
netstat -lntp |grep 80
测试php解析
编辑并加入如下内容:
vi /usr/local/nginx/html/1.php
<?php
echo "This is nginx test page.";
?>
查看解析结果:
curl localhost/1.php
二、Nginx默认虚拟主机
打开nginx.conf编辑:
vim /usr/local/nginx/conf/nginx.conf
增加这一行内容:
include vhost/*.conf
在conf目录下创建vhost目录:
mkdir /usr/local/nginx/conf/vhost
新建并编辑一个conf文件,
vim aaa.com.conf
加入如下内容:
server
{
listen 80 default_server; // 有这个标记的就是默认虚拟主机
server_name aaa.com;
index index.html index.htm index.php;
root /data/wwwroot/default;
}
再创建一个/data/wwwroot/default/目录,如果已经存在,则不用创建:
mkdir -p /data/wwwroot/default/
进入这个目录cd /data/wwwroot/default/,并新建定义一个index.html,输入以下内容:
This is a default site.
检查一下配置文件是否正确:
/usr/local/nginx/sbin/nginx -t
检查没有问题再重新加载一下:
/usr/local/nginx/sbin/nginx -s reload
测试:
curl localhost
也可以指定另外的域名测试:
curl -x127.0.0.1:80 123.com
三、 Nginx用户认证
创建一个新的虚拟主机test.com.conf,并写入如下内容:
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;
}
生成密码文件:
yum install -y httpd
htpasswd -c /usr/local/nginx/conf/htpasswd amo
htpasswd /usr/local/nginx/conf/htpasswd user1
(如果还要生成第二个用户密码文件,把-c去掉即可,如果不去掉的话就是重置密码的意思)
然后测试配置并重新加载:
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
测试:
状态码为401说明需要验证
curl -x127.0.0.1:80 test.com -I
创建test.com目录并输入test.com内容进去:
mkdir /data/wwwroot/test.com
echo “test.com”>/data/wwwroot/test.com/index.html
访问状态码变为200:
curl -uamo -x127.0.0.1:80 test.com -I
四、Nginx域名重定向
更改test.com.conf内容
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;
}
}
去掉用户认证的配置,再保存退出:
server_name 后面支持写多个域名,这里要和httpd的做一个对比
permanent 为永久重定向,状态码为301,如果写redirect则为302
检测并重新加载:
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
测试,不管test2或test3,都重定向到test.com:
curl -x127.0.0.1:80 test2.com/index.html -I
curl -x127.0.0.1:80 test3.com/index.html -I