LNMP架构(中)

一、Nginx默认虚拟主机

二、Nginx用户认证

三、Nginx域名重定向

四、Nginx访问日志

五、Nginx日志切割

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

七、Nginx防盗链

八、Nginx访问控制

九、Nginx解析php的配置

十、Nginx代理

 

一、Nginx默认虚拟主机

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

237985688aa62d5a0cb93a6ac105a15b2c1.jpg

 

增加如下内容

94aede3d3d8fd555aa4c71e398eaf138beb.jpg

 

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;                      //指定网站的根目录

}

 

71032c5d26c61012852b0d3a04abb71d43c.jpg

 

 

 

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

 

7e5e571d17571f651d7e208a9d46dac734a.jpg

 

支持include语法和apache类似

a5113b12bee440798bd1a20b0d75b7181f3.jpg

 

 

 

二、Nginx用户认证

 

进入虚拟主机目录

48bee5c67391d636ab4b537fbf726bdc829.jpg

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

a95c9ac3ed491c70b674ed5c4c7db5b03d2.jpg

 

 

生成密码文件

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

 

668ad6c0335cb421cb84e7e9eb8ee15cfba.jpg

 

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

209e36553c7bd2c563511a7bd292f1bd980.jpg

 

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

47078bb2ead9008109921a592e3abbb0353.jpg

 

测试访问

f8584c886d31efd1f7246d26d34aa480400.jpg

 

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

80d0a2d8189d2cac3a3e091831d079a98e9.jpg

 

因为/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        //编辑虚拟主机

11c827ea98831ba54681d0b3c713f4474bb.jpg

 

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

fe436b378837aac0c20ae1618ec69172aad.jpg

 

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

5ff7cc8a8bd65529efb880967ac1cfbfd2b.jpg

 

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

7adf4c0130d349a5cdd21916c8d380a8527.jpg

 

对admin.php做用户认证

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

832cc1bae613519a63475dfa1b57f5a49d5.jpg

 

重新加载配置文件

bb9028706f59799f30b3c3912ab775a8668.jpg

 

测试

5985d0a6afb030d92be011860603fde3380.jpg

 

 

三、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

1d539f91c92d2809297d160ff88de315969.jpg

 

重新加载配置文件

b318de517faf3f5a271e6a6651685ffcc20.jpg

 

测试

6dc823627b8c9227f4d0e9ce95a21f04b6b.jpg

 

 

四、Nginx访问日志

日志格式

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

b310880cf3683e6447ba33a2a8fa2aff2d3.jpg

 

字段含义

ce2d25fab5c81b716e81fc8e074e5ebb7d1.jpg

 

 

 

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

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

access_log /tmp/test.com.log combined_realip;

 

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

 

95417f910bbbd426c15ad96a2134f723a69.jpg

 

 

重新加载配置文件

e9abdfb58af3f33ab3fe7d1fad57e069f35.jpg

 

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

52207945aa491700d5fb0a6ca5747c4e688.jpg

 

 

 

五、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`

 

 

aa4184f2bbf67e2718f9101928493d95ad0.jpg

 

 

 

执行脚本

15a6614887df65b63b28f40757a8c7e2e4b.jpg

 

 

查看/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;

    }

 

5a17827861a7c9183ad24160d650c57647a.jpg

 

重新加载配置文件

d748e506735e40a3a96a506d26fc706a98b.jpg

 

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

95d97e26a47f221b5f5297c10f8b94c6e88.jpg

 

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

b205f28de43fc146a49b325c2c3ee6075c3.jpg

 

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

8b714c91380f352cbdc2b8e6ee68ab5dd76.jpg

 

 

5000efc789212347a51dcab57b7e6b4c5dd.jpg

 

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

ce76bda863b1f65e4e731d786752c132724.jpg

 

重新加载配置文件

277ad862488be1acac4192cc6548399a1c2.jpg

 

 

七、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;

}

 

 

b492881ee3d855fb990135c558324c831cb.jpg

 

重新加载配置文件

000f4929e43c4ddf600732d89f31979150d.jpg

 

测试

df9161397cb7077305ffb64a5ce5f14b576.jpg

 

八、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       //编辑如下内容

199f8a06176351e51fd353dbbe5d241330f.jpg

 

重新加载配置文件

08885b7f1603badd27f0364a827a68e1ec1.jpg

 

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

6fd7ca618b9bab9809163bc26866335935e.jpg

 

 

 

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

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

 

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

{

        deny all;

}

 

ba49f4d7f562e5b9005f9685fe5d2ba0cd3.jpg

 

重新加载配置文件

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         //访问目录文件

c37dc7fa92654e9e04d3c09fe7fc7bc2d3b.jpg

 

 

 

根据user_agent限制

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

 

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

{

      return 403;

}

 

 

3d78e380bdbf8e83516cf6febf091779d14.jpg

 

重新加载配置文件

4c0e134df2c80e434f49b4215348f99539f.jpg

 

测试,指定user_agent访问

2d63a8a7f42e36bc3d1fd98011e836e3a14.jpg

 

九、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

 

e1b415733cee6b3c37c2280a1a418a46d62.jpg

 

 

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

2e0829d44d3e8699d87f87b179441fc8d5a.jpg

 

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

ee93247e62c41769bf75f579641ec471dda.jpg

 

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

786f8645f780ab5e4efa64e30c776e979ba.jpg

7c2352591e7df95b95621fbff977b534a90.jpg

 

 

502错误排查

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

b16ce5e9e41cc21434cae186f5ce52cb551.jpg

 

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

888dfc2a1a0464c2316788d1e961d610238.jpg

 

 

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

64d3f827b93632e72f74dae645332ffc8c6.jpg

 

查看php配置文件信息

358bb9f84f10e6fbb4ab319cd0dc03c62d5.jpg

 

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

413497d85cb1a28092c25be3274c95106f4.jpg

 

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

f5cbeb04fee10884359e0b3765451f6044d.jpg

 

查看监听的IP和端口

96a12ffe0ef86043ef2e6f7af39621042d6.jpg

 

重新测试,显示502

795efbf7dcf39964dbc2544db2950e0c63a.jpg

 

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

d7e6ae23c8571627de28a5f1397f7b67a52.jpg

 

 

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

ad5a0bc15579d717d32a6ca7299f1de619d.jpg

 

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

bbb7631bbbf4c68d382433d141c3340b4bf.jpg

22fd8b22c17a300295437bdbf9bdfecac11.jpg

 

 

 

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

b4bb12a390d7945e9c531d2476679ee0e8e.jpg

 

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

465f0744a0c73d624fc2f346e1f9595f3fa.jpg

 

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

45ba2cfbb35a9916aacdbce1e93ca7de3a3.jpg

 

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

709409ce86bc3805bb9041ae0466a830528.jpg

 

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

c64bc4a7da2ea7a1250e7ef3a278b7cbb37.jpg

 

f74c3312d7fb80e3f55571318f1041a261f.jpg

 

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

af79c1d5242530a471d08578cf1f71d8a5d.jpg

 

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

7daf9db2cc99c7ac71867a06c8fceb1ab7c.jpg

 

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

3cac2975ae1b36d3b434339792b14abbff1.jpg

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

62567acf80e6e1b3dbd7f170d8fbbba7b27.jpg

 

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

 

十、Nginx代理

1ae5d7d0a89a6cc8d54ca9c39dbdad805b1.jpg

 

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;

    }

}

 

 

 

a035ebcffe6206856784ddbc30eaba9e3af.jpg

 

先不加载配置文件,用本机访问正常,指定本机访问显示404
2ce760068635121bcc98187a952119f9825.jpg
 
46c6c25566b5067cfb3691a2a735c55bc63.jpg

 

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

e5de562a9ce66538535455cf680d913ae81.jpg

 

指定本机去访问正常

6e25adc60ecabb53c091c48f93b5e0b2bf9.jpg

 

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值