LNMP架构(中)

原文链接: https://my.oschina.net/u/3991860/blog/2987282

一、Nginx默认虚拟主机

二、Nginx用户认证

三、Nginx域名重定向

四、Nginx访问日志

五、Nginx日志切割

六、静态文件不记录日志和过期时间

七、Nginx防盗链

八、Nginx访问控制

九、Nginx解析php的配置

十、Nginx代理

 

一、Nginx默认虚拟主机

vim /usr/local/nginx/conf/nginx.conf           //进入nginx配置文件,修改如下操作

LNMP架构(中)_第1张图片

 

增加如下内容

LNMP架构(中)_第2张图片

 

cd /usr/local/nginx/conf/        //进入该目录创建vhost目录,编辑文件aaa.com.conf

e927f0cc95b57a61a03ac761d615f549579.jpg

 

vim aaa.com.conf      //编辑如下内容

server

{

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

    server_name aaa.com;

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

    root /data/wwwroot/default;                      //指定网站的根目录

}

 

LNMP架构(中)_第3张图片

 

 

 

mkdir /data/wwwroot/default       //创建网站目录

 

cd /data/wwwroot/default/           //进入网站目录

 

创建一个index.html文件,编辑如下内容

789eac75b3d0961b61ce2b2ea281d4c71d5.jpg

 

/usr/local/nginx/sbin/nginx -t          //测试虚拟主机配置文件是否正确

29288858724c0f6fe63d51148f1754f6c4c.jpg

 

/usr/local/nginx/sbin/nginx -s reload          //重新加载配置

 

312e78a7d01b766333c1ab4cc2a3a0ad850.jpg

 

 

区分虚拟主机

90435516606e7505bd2ced9b68fa2fcd211.jpg

 

LNMP架构(中)_第4张图片

 

支持include语法和apache类似

LNMP架构(中)_第5张图片

 

 

 

二、Nginx用户认证

 

进入虚拟主机目录

48bee5c67391d636ab4b537fbf726bdc829.jpg

vim test.com.conf             //编辑虚拟主机

LNMP架构(中)_第6张图片

 

 

生成密码文件

使用apache生成密码文件的工具,由于系统已经安装过apache服务,所有可以直接使用命令,如无安装,执行yum install -y httpd安装即可

 

668ad6c0335cb421cb84e7e9eb8ee15cfba.jpg

 

查看生成密码文件,再次创建用户名和密码无需加-c参数

209e36553c7bd2c563511a7bd292f1bd980.jpg

 

测试配置文件是否正确,重新加载配置文件

47078bb2ead9008109921a592e3abbb0353.jpg

 

测试访问

LNMP架构(中)_第7张图片

 

指定用户名和密码访问,显示404

LNMP架构(中)_第8张图片

 

因为/data/wwwroot/test.com/这个目录还未创建

0ab8a88f63b8c1046ace77a15a77551cba5.jpg

 

mkdir /data/wwwroot/test.com           //创建该目虚拟主机目录

echo "test.com" > /data/wwwroot/test.com/index.html          //编辑index.html文件

curl -uabc:123456 -x127.0.0.1:80 test.com           //重新访问,这种用户认证是针对整个站点

3c5fbb4b8325777be7f452d542e9536d6eb.jpg

 

此时需要对目录做用户认证(例:admin目录)

vim /usr/local/nginx/conf/vhost/test.com.conf        //编辑虚拟主机

LNMP架构(中)_第9张图片

 

测试配置文件并加载配置文件

fe436b378837aac0c20ae1618ec69172aad.jpg

 

测试访问test.com站点无需指定用户名密码,访问admin目录显示401,需要用户名和密码认证

LNMP架构(中)_第10张图片

 

创建admin目录并编辑index.html文件

LNMP架构(中)_第11张图片

 

对admin.php做用户认证

vim /usr/local/nginx/conf/vhost/test.com.conf        //编辑虚拟主机

LNMP架构(中)_第12张图片

 

重新加载配置文件

bb9028706f59799f30b3c3912ab775a8668.jpg

 

测试

LNMP架构(中)_第13张图片

 

 

三、Nginx域名重定向

vim /usr/local/nginx/conf/vhost/test.com.conf        //编辑虚拟主机

server

{

    listen 80;

    server_name test.comtest1.comtest2.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

LNMP架构(中)_第14张图片

 

重新加载配置文件

b318de517faf3f5a271e6a6651685ffcc20.jpg

 

测试

LNMP架构(中)_第15张图片

 

 

四、Nginx访问日志

日志格式

vim /usr/local/nginx/conf/nginx.conf //搜索log_format

LNMP架构(中)_第16张图片

 

字段含义

LNMP架构(中)_第17张图片

 

 

 

除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中增加

vim /usr/local/nginx/conf/vhost/test.com.conf        //编辑虚拟主机配置文件,增加如下内容

access_log /tmp/test.com.log combined_realip;

 

这里的combined_realip就是在nginx.conf中定义的日志格式名字

 

LNMP架构(中)_第18张图片

 

 

重新加载配置文件

e9abdfb58af3f33ab3fe7d1fad57e069f35.jpg

 

测试访问,并查看访问日志

LNMP架构(中)_第19张图片

 

 

 

五、Nginx日志切割

自定义shell 脚本

vim /usr/local/sbin/nginx_log_rotate.sh      //写入如下内容

#! /bin/bash

## 假设nginx的日志存放路径为/tmp/

d=`date -d "-1 day" +%Y%m%d`

logdir="/tmp/"

nginx_pid="/usr/local/nginx/logs/nginx.pid"

cd $logdir

for log in `ls *.log`

do

    mv $log $log-$d

done

/bin/kill -HUP `cat $nginx_pid`

 

 

LNMP架构(中)_第20张图片

 

 

 

执行脚本

LNMP架构(中)_第21张图片

 

 

查看/tmp/目录

fd2158799aa31ca9d1219bf32c5f54c2802.jpg

 

find /tmp/ -name *.log-* -type f -mtime +30 |xargs rm      //删除30天前tmp目录下*.log-*类型的文件

fddcfbc2686961fc66b255b9b5dc607d3d7.jpg

find /tmp/ -name *.log-* -type f         //查找tmp目录下*.log-*类型的文件

50d9fb8a79f90a4af2a5bdcad29a755c442.jpg

 

crontab -e     //加入任务计划,每天凌晨0点执行该脚本

feac6e9d9ee508b62d6fa9def359a02aff9.jpg

 

 

 

 

六、静态文件不记录日志和过期时间

vim /usr/local/nginx/conf/vhost/test.com.conf     //进入虚拟主机配置文件,增加如下内容

 

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

    {

          expires      7d;

          access_log off;

    }

location ~ .*\.(js|css)$

    {

          expires      12h;

          access_log off;

    }

 

LNMP架构(中)_第22张图片

 

重新加载配置文件

d748e506735e40a3a96a506d26fc706a98b.jpg

 

cd /data/wwwroot/test.com/       //进入网站根目录,创建1.gif和2.js,并编辑内容,模拟测试效果

LNMP架构(中)_第23张图片

 

测试结果显示,不记录访问1.gif和2.js的记录

LNMP架构(中)_第24张图片

 

只匹配js结尾的,所以会记录日志

LNMP架构(中)_第25张图片

 

 

LNMP架构(中)_第26张图片

 

vim /usr/local/nginx/conf/vhost/test.com.conf    //进入虚拟主机配置文件,修改如下内容

LNMP架构(中)_第27张图片

 

重新加载配置文件

LNMP架构(中)_第28张图片

 

 

七、Nginx防盗链

 

vim /usr/local/nginx/conf/vhost/test.com.conf                  // 配置如下,可以和静态文件不记录日志和过期时间的配置结合起来

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$

{

    expires 7d;

    valid_referers none blocked server_names  *.test.com ;

    if ($invalid_referer) {

        return 403;

    }

    access_log off;

}

 

 

LNMP架构(中)_第29张图片

 

重新加载配置文件

000f4929e43c4ddf600732d89f31979150d.jpg

 

测试

LNMP架构(中)_第30张图片

 

八、Nginx访问控制

 

需求:访问/admin/目录的请求,只允许某几个IP访问,配置如下:

location /admin/

{

    allow 127.0.0.1;

    allow 192.168.0.236;

    deny all;

}

 

vim /usr/local/nginx/conf/vhost/test.com.conf       //编辑如下内容

LNMP架构(中)_第31张图片

 

重新加载配置文件

08885b7f1603badd27f0364a827a68e1ec1.jpg

 

测试访问正常,其他IP访问显示403

LNMP架构(中)_第32张图片

 

 

 

可以匹配正则,禁止上传图片的目录解析php

vim /usr/local/nginx/conf/vhost/test.com.conf     //编辑如下内容

 

location ~ .*(upload|image)/.*\.php$

{

        deny all;

}

 

LNMP架构(中)_第33张图片

 

重新加载配置文件

f81500780d9a08550b3eb13a6dc05e769de.jpg

 

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

echo "1111" > /data/wwwroot/test.com/upload/1.php     //编辑php文件

curl -x127.0.0.1:80 test.com/upload/1.php         //访问目录文件

LNMP架构(中)_第34张图片

 

 

 

根据user_agent限制

vim /usr/local/nginx/conf/vhost/test.com.conf     //编辑虚拟主机配置文件

 

if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato')

{

      return 403;

}

 

 

LNMP架构(中)_第35张图片

 

重新加载配置文件

4c0e134df2c80e434f49b4215348f99539f.jpg

 

测试,指定user_agent访问

LNMP架构(中)_第36张图片

 

九、Nginx解析php的配置

 

配置如下:

location ~ \.php$

    {

        include fastcgi_params;

        fastcgi_pass unix:/tmp/php-fcgi.sock;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;

    }

fastcgi_pass 用来指定php-fpm监听的地址或者socket

 

LNMP架构(中)_第37张图片

 

 

编辑3.php文件,内容如下

2e0829d44d3e8699d87f87b179441fc8d5a.jpg

 

先不加载配置,访问该目录显示源代码

ee93247e62c41769bf75f579641ec471dda.jpg

 

加载配置文件,再次访问,显示网页信息

786f8645f780ab5e4efa64e30c776e979ba.jpg

LNMP架构(中)_第38张图片

 

 

502错误排查

vim /usr/local/nginx/conf/vhost/test.com.conf       //修改一下配置

LNMP架构(中)_第39张图片

 

重新加载配置文件,再次访问显示502,原因是因为配置文件找不到sock文件

LNMP架构(中)_第40张图片

 

 

查看错误日志,提示没有该文件

LNMP架构(中)_第41张图片

 

查看php配置文件信息

LNMP架构(中)_第42张图片

 

vim  /usr/local/php-fpm/etc/php-fpm.conf      //修改php配置文件,改为监听ip和端口

LNMP架构(中)_第43张图片

 

重新加载配置我文件,并重启php服务,测试php配置文件是否正确

LNMP架构(中)_第44张图片

 

查看监听的IP和端口

LNMP架构(中)_第45张图片

 

重新测试,显示502

LNMP架构(中)_第46张图片

 

查看日志,依旧显示路径不存在

LNMP架构(中)_第47张图片

 

 

 vim /usr/local/nginx/conf/vhost/test.com.conf          //编辑虚拟主机配置文件

LNMP架构(中)_第48张图片

 

重新加载php和nginx的配置文件,访问正常

bbb7631bbbf4c68d382433d141c3340b4bf.jpg

LNMP架构(中)_第49张图片

 

 

 

vim /usr/local/php-fpm/etc/php-fpm.conf     //编辑php配置文件

LNMP架构(中)_第50张图片

 

重新加载配置我文件,查看文件权限为440

465f0744a0c73d624fc2f346e1f9595f3fa.jpg

 

vim /usr/local/nginx/conf/vhost/test.com.conf      //修改虚拟主机配置文件

LNMP架构(中)_第51张图片

 

重新加载配置文件,访问该目录显示502

LNMP架构(中)_第52张图片

 

tail /usr/local/nginx/logs/nginx_error.log    //查看错误日志,提示权限问题,拒绝访问

LNMP架构(中)_第53张图片

 

LNMP架构(中)_第54张图片

 

临时更改/tmp/php-fcgi.sock文件所属用户

af79c1d5242530a471d08578cf1f71d8a5d.jpg

 

curl -x127.0.0.1:80 test.com/3.php        //重新访问正常

LNMP架构(中)_第55张图片

 

vim /usr/local/php-fpm/etc/php-fpm.conf     //还原配置文件

LNMP架构(中)_第56张图片

重启配置文件,666权限表示可以让所有用户读写

LNMP架构(中)_第57张图片

 

还有一种502情况,php-fpm服务资源耗尽

 

十、Nginx代理

LNMP架构(中)_第58张图片

 

cd /usr/local/nginx/conf/vhost

 

vim proxy.conf //加入如下内容

server

{

    listen 80;

    server_name ask.apelearn.com;

    location /

    {

        proxy_pass     http://47.104.7.242/;

        proxy_set_header Host   $host;

        proxy_set_header X-Real-IP      $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

}

 

 

 

LNMP架构(中)_第59张图片

 

先不加载配置文件,用本机访问正常,指定本机访问显示404
LNMP架构(中)_第60张图片
 
LNMP架构(中)_第61张图片

 

重新加载配置文件,正常访问网站

LNMP架构(中)_第62张图片

 

指定本机去访问正常

LNMP架构(中)_第63张图片

 

 

转载于:https://my.oschina.net/u/3991860/blog/2987282

你可能感兴趣的:(LNMP架构(中))