php-fpm配置,Nginx配置

Nginx配置

默认虚拟主机

修改主配置文件

# vi  /usr/local/nginx/conf/nginx.conf

在最后 } 符号上面写入  include vhost/*.conf;

设置默认虚拟主机

# mkdir  /usr/local/nginx/conf/vhost

# cd  /usr/local/nginx/conf/vhost

# vi  default.conf

server
    {
        listen  80  default_server;   标记为默认虚拟主机
        server_name  aaa.com;
        index  index.html  index.htm  index.php;
        root  /data/nginx/default;
    }

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx  -s  reload

创建索引页

# mkdir  -p  /data/nginx/default/

# echo  "default_server"  >  /data/nginx/default/index.html

测试

用户认证

创建一个新的虚拟主机

# cd  /usr/local/nginx/conf/vhost/

# vi  test.com.conf

server
{
        listen  80;
        server_name  test.com;
        index  index.html  index.htm  index.php;
        root  /data/nginx/test.com;
        location  /
        {
                auth_basic      "Auth";    打开认证
                auth_basic_user_file    /usr/local/nginx/conf/htpasswd;   指定用户密码文件
        }
}

安装httpd

# yum  install  -y  httpd

创建用户

# htpasswd  -c  /usr/local/nginx/conf/htpasswd  tuitui

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx  -s  reload

测试

# mkdir  /data/nginx/test.com

# echo  "test.com"  >  /data/nginx/test.com/index.html

# curl  -I  -x127.0.0.1:80  test.com

出现状态码401表示该网站需要认证

# systemctl  stop  firewalld  关闭防火墙

编辑Windows的hosts文件,最后一行加入 192.168.89.128  test.com

浏览器访问

如果要对某个目录做用户认证,修改location后面的路径

域名重定向

配置文件

# cd  /usr/local/nginx/conf/vhost/
# vi  test.com.conf
server
{
        listen  80;
        server_name  test.com  test1.com  test2.com;
        index  index.html  index.htm  index.php;
        root  /data/nginx/test.com;
        if  ($host  !=  'test.com'  )
        {
                rewrite  ^/(.*)$  http://test.com/$1  permanent;  永久重定向
        }
}

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx  -s  reload

# curl  -x127.0.0.1:80  test1.com/123.txt  -I

Nginx的访问日志

查看日志格式

# grep  -A2  log_format  /usr/local/nginx/conf/nginx.conf

指定访问日志的路径

# vi  test.com.conf
server
{
        listen  80;
        server_name  test.com  test1.com  test2.com;
        index  index.html  index.htm  index.php;
        root  /data/nginx/test.com;
        if  ($host  !=  'test.com'  )
        {
                rewrite  ^/(.*)$  http://test.com/$1  permanent;
        }
        access_log  /tmp/1.log  combined_realip;
}

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx  -s  reload

测试

# curl  -x127.0.0.1:80  test.com/111

# cat  /tmp/1.log

日志切割脚本

# vi  /usr/local/sbin/nginx_log_rotate.sh

写入以下内容

#!  /bin/bash
d=`date  -d  "-1 day"  +%Y%m%d`
logdir="/data/logs"
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`
0  0  *  *  *  /bin/bash  /usr/local/sbin/nginx_log_rotate.sh

配置静态文件不记录日志并添加过期时间

配置文件

# vi  test.com.conf
server
{
        listen  80;
        server_name  test.com  test1.com  test2.com;
        index  index.html  index.htm  index.php;
        root  /data/nginx/test.com;
        if  ($host  !=  'test.com'  )
        {
                rewrite  ^/(.*)$  http://test.com/$1  permanent;
        }
        location  ~  .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
                expires         7d;
                access_log  off;
        }
        location  ~  .*\.(js|css)$
        {
                expires         12h;
                access_log  off;
        }
        access_log  /tmp/1.log  combined_realip;
}

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

测试过程

创建js文件

# echo  "11111111"  >  /data/nginx/test.com/1.js

创建jpg文件

# echo  "22222222"  >  /data/nginx/test.com/2.jpg

创建一个对比的文件

# touch  /data/nginx/test.com/1.jss

访问js类型的文件,缓存过期时间为12小时

# curl  -I  -x127.0.0.1:80 test.com/1.js

访问jpg类型的文件,缓存过期时间为7小时

# curl  -I  -x127.0.0.1:80 test.com/2.jpg

对比Cache-control对应的时间大小

# curl  -I  -x127.0.0.1:80 test.com/1.jss

查看访问日志

# cat  /tmp/1.log

Nginx防盗链

和日志部分合在一起配置文件

# vi  test.com.conf

server
{
        listen  80;
        server_name  test.com  test1.com  test2.com;
        index  index.html  index.htm  index.php;
        root  /data/nginx/test.com;
        if  ($host  !=  'test.com'  )
        {
                rewrite  ^/(.*)$  http://test.com/$1  permanent;
        }
        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;
}

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx  -s  reload

测试

# curl  -x127.0.0.1:80  -I  -e  "http://aaa.com/1.txt"  test.com/2.jpg

# curl  -x127.0.0.1:80  -I  -e  "http://test.com/1.txt"  test.com/2.jpg

同时有过期时间和防盗链功能

访问控制

配置文件

(使能访问admin目录的请求只允许192.168.89.1和127.0.0.1访问)

# vi  test.com.conf

server
{
        listen  80;
        server_name  test.com  test1.com  test2.com;
        index  index.html  index.htm  index.php;
        root  /data/nginx/test.com;
        if  ($host  !=  'test.com'  )
        {
                rewrite  ^/(.*)$  http://test.com/$1  permanent;
        }
        location  /admin/
        {
                allow  192.168.89.1;
                allow  127.0.0.1;
                deny  all;
        }
}

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx  -s  reload

测试

# mkdir  /data/nginx/test.com/admin
# echo  "123"  >  /data/nginx/test.com/admin/1.html
# curl  -x127.0.0.1:80  test.com/admin/1.html

# curl  -x192.168.89.128:80  test.com/admin/1.html

拒绝某几个IP

限制解析PHP

限制user_agent

# vi  test.com.conf

server
{
        listen  80;
        server_name  test.com  test1.com  test2.com;
        index  index.html  index.htm  index.php;
        root  /data/nginx/test.com;
        if  ($host  !=  'test.com'  )
        {
                rewrite  ^/(.*)$  http://test.com/$1  permanent;
        }

if  ($http_user_agent  ~  'Spider/3.0|YoudaoBot|Tomato')
        {
                return  403;
        }
}

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx  -s  reload

Nginx解析PHP

配置文件

# vi  test.com.conf

server
{
        listen  80;
        server_name  test.com  test1.com  test2.com;
        index  index.html  index.htm  index.php;
        root  /data/nginx/test.com;
        if  ($host  !=  'test.com'  )
        {
                rewrite  ^/(.*)$  http://test.com/$1  permanent;
        }

location ~ \.php$
        {
                include  fastcgi_params;
                fastcgi_pass  unix:/tmp/php-fcgi.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /data/nginx/test.com$fastcgi_script_name;
        }
        access_log  /tmp/1.log  combined_realip;
}

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx  -s  reload

Nginx代理

配置文件

# cd  /usr/local/nginx/conf/vhost/

# ping ask.apelearn.com  获取proxy_pass

# vi  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;
        }
}

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx  -s  reload

测试

# curl  -x127.0.0.1:80  ask.apelearn.com  -I

# curl  ask.apelearn.com  -I

负载均衡

# yum  install  -y  bind-utils  安装dig命令

# dig  www.baidu.com   查看域名对应的IP

测试

# curl  -x61.135.169.125:80  www.baidu.com  -I

# curl  -x61.135.169.121:80  www.baidu.com  -I

配置文件

# vi  /usr/local/nginx/conf/vhost/load.conf

upstream  baidu_com
{
        ip_hash;
        server  61.135.169.125:80;
        server  61.135.169.121:80;
}
server
{
        listen  80;
        server_name  www.baidu.com;
        location  /
        {
                proxy_pass   http://baidu_com;
                proxy_set_header  Host  $host;
                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
}

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx  -s  reload

测试

# curl  -x127.0.0.1:80  www.baidu.com  -I

Nginx配置SSL

生成自定义的SSL证书

生成私钥

# openssl  genrsa  -des3  -out  tmp.key  2048

删除密码

# openssl  rsa  -in  tmp.key  -out  aminglinux.key

生成证书请求文件

# openssl  req  -new  -key  aminglinux.key  -out  aminglinux.csr

生成GRT证书文件

# openssl  x509  -req  -days  365  -in  aminglinux.csr  -signkey  aminglinux.key  -out  aminglinux.crt

编译Nginx

# cd  /usr/local/src/nginx-1.10.3

# ./configure  --prefix=/usr/local/nginx/  --with-http_ssl_module

# make

# make install

配置文件

# vi  /usr/local/nginx/conf/vhost/ssl.conf

server
{
        listen  443;
        server_name  aming.com;
        index  index.html  index.php;
        root  /data/nginx/aming.com;
        ssl  on;
        ssl_certificate  aminglinux.crt;
        ssl_certificate_key  aminglinux.key;
        ssl_protocols  TLSv1  TLSv1.1  TLSv1.2;
        location  ~  \.php$
        {
                include  fastcgi_params;
                fastcgi_pass  unix:/tmp/php-fcgi.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /data/nginx/aming.com$fastcgi_script_name;
        }
        access_log  /tmp/1.log  combined_realip;
}

重新加载配置文件

# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# /usr/local/nginx/sbin/nginx  -s  reload

创建对应的目录和测试文件

# mkdir  /data/nginx/aming.com

# echo  "<?php phpinfo();  ?>"  >  /data/nginx/aming.com/1.php

# /etc/init.d/nginx  restart

测试

到真实电脑上修改hosts,把网站域名指向Linux机器

在最下面增加一行 192.168.89.128 aming.com

用浏览器访问https://aming.com/1.php

php-fpm配置

php-fpm的pool

修改配置文件

# vi  /usr/local/php-fpm/etc/php-fpm.conf

创建配置文件目录和子配置文件

# mkdir  /usr/local/php-fpm/etc/php-fpm.d

# cd  /usr/local/php-fpm/etc/php-fpm.d

# vi  www.conf

[www]
listen=/tmp/www.sock
listen.mode=666
user=php-fpm
group=php-fpm
pm=dynamic     定义php-fpm的子进程启动模式,dynamic为动态模式
pm.max_children=50
pm.start_servers=20     定义php-fpm服务在启动服务时产生的子进程数量
pm.min_spare_servers=5    定义在空闲时段子进程数的最少数量
pm.max_spare_servers=35   定义在空闲时段子进程数的最大值
pm.max_requests=500    定义一个子进程最多处理的请求数
rlimit_files=1024

# vi  aming.conf

[aming]
listen=/tmp/aming.sock
listen.mode=666
user=php-fpm
group=php-fpm
pm=dynamic
pm.max_children=50
pm.start_servers=20
pm.min_spare_servers=5
pm.max_spare_servers=35
pm.max_requests=500
rlimit_files=1024

两个pool互不影响

检验配置

# /usr/local/php-fpm/sbin/php-fpm  -t
[20-Dec-2019 09:19:12] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful 

重启服务

# /etc/init.d/php-fpm  restart

查看sock文件

# ls  /tmp/*.sock

php-fpm的慢执行日志

编辑配置文件

# vi  /usr/local/php-fpm/etc/php-fpm.d/www.conf

在最后加

request_slowlog_timeout=1
slowlog=/usr/local/php-fpm/var/log/www-slow.log

检验配置

# /usr/local/php-fpm/sbin/php-fpm  -t
[20-Dec-2019 09:19:12] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

php-fpm定义open_basedir

编辑配置文件

# vi  /usr/local/php-fpm/etc/php-fpm.d/www.conf

在最后加

php_admin_value[open_basedir]=/data/www/:/tmp/

检验配置

# /usr/local/php-fpm/sbin/php-fpm  -t
[20-Dec-2019 09:19:12] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

LNMP环境配置(2)的更多相关文章

  1. CentOS 下 LNMP 环境配置

    安装配置 Nginx 安装配置 MySQL 安装配置 PHP Nginx 与 PHP-FPM 集成 环境配置验证   LNMP 环境代表 Linux 系统下 Nginx + MySQL + PHP 网 ...

  2. WIN10 vagrant和virtualbox虚拟机和一键搭建lnmp环境配置thinkphp虚拟主机

    版本:win10系统 virtualbox:5.1.26 vagrant :1.9.7 centos 7.0 xshell/git 首先下载好对应版本的软件 配置vagrant和virtualbox ...

  3. VM虚拟机 Centos7 lnmp环境 配置域名问题 windows浏览器访问的问题

    CentOS7  ip地址为 192.168.0.155 搭有 LNMP集成环境 执行 lnmp vhost add 配置服务器 指定目录的域名 mark.com 这时windows 机器的 浏览器想 ...

  4. LNMP环境配置(1)

    安装Nginx.MySQL.PHP 概念 LNMP是Linux Nginx MySQL PHP 的简写,把Nginx.MySQL以及PHP安装在Linux系统上,组成一个环境来运行PHP的脚本语言. ...

  5. CentOS 7 lnmp环境配置laravel项目的问题总结!

    一.最常见的几个问题 1.部署好站点后,访问站点的时候始终是“File Not Found”!(nginx中的路由配置问题) 2.除了根目录可以访问其它的访问全是403问题!(权限问题) 3.除了根目 ...

  6. [LNMP]——LNMP环境配置

    LNMP=Linux+Nginx+Mysql+PHP Install Nginx //安装依赖包 # yum install openssl openssl-devel zlib-devel //安装 ...

  7. LNMP环境配置SSL证书 lnmp ssl add

    .4新增的添加SSL功能 lnmp ssl  add 如果需要添加输入 y ,不添加输入 n 回车. 选择了添加SSL会提示 有两个选项,1 选项为使用自己准备好的SSL证书和key. > &g ...

  8. 【Linux运维】LNMP环境配置

    安装准备: Centos7.3 MYSQL5.6 PHP5.6 NGINX1.10.3 一.安装Mysql mysql:[root@host129 src]#cd /usr/local/src/ [r ...

  9. vmware搭建lnmp环境配置域名

    找到nginx配置文件,修改server_name 然后找到/etc/hosts文件 修改成如下 之后在Windows本地的C盘的hosts文件中添加解析 好了,这样就可以访问了 通往牛逼的路上,在意 ...

随机推荐

  1. python实现一个客户端与服务端的通信

    函数介绍 Socket对象方法: 服务端: 函数 描述 .bind() 绑定地址关键字,AF_INET下以元组的形式表示地址.常用bind((host,port)) .listen() 监听TCP,可 ...

  2. reload重载配置文件的真相

    02检查配置文件语法也就是说在重载nginx配置文件之前,不是必须使用nginx -t检查语法 03修改配置文件,新开启端口,比如443,所以需要打开新的监听端口 04使用新配置启动新的worker子 ...

  3. Spring 依赖注入两种方式

    (1):通过 setter 方法注入: <property name=“ ” ></property> 其中,name属性的取值依setter方法名而定,要求这个类里面这个对应 ...

  4. frp内网穿透协助内网程序(如微信相关)开发

    众所周知,在本机上开发微信相关的程序,很不方便,因为拨号IP随机,而且很多端口不支持,如80,443 所以,有必要使用一台外网主机中转. frp就可以解决此问题 安装环境,外网服务器:腾讯云,cent ...

  5. Python3(十一) 原生爬虫

    一.爬虫实例 1.原理:文本分析并提取信息——正则表达式. 2.实例目的:爬取熊猫TV某个分类下面主播的人气排行 分析网站结构 操作:F12查看HTML信息,Ctrl+Shift+C鼠标选取后找到对应 ...

  6. ODBC连接数据库实例

    2012-12-13 22:27 (分类:默认分类) 1.首先建立数据源,正常情况下载控制面板-管理工具-数据源,打开后有用户DSN系统DSN 两者区别在于系统级的DSN,就是对该系统的所有登录用户可 ...

  7. 「C++ 」借来的资源,何如还的潇洒?

    前言 本文的内容将专门对付内存管理,培养起有借有还的好习惯,方可消除资源管理的问题. 正文 所谓的资源就是,一旦用了它,将来必须还给系统.如果不是这样,糟糕的事情就会发生. C++ 程序内常见的资源: ...

  8. nginx+uwsgi部署Django项目到Ubuntu服务器全过程,以及那些坑!!!

    前言:自己在windows上用PyCharm编写的Django项目,编写完后在windows上运行一点问题都没有,但是部署到服务器上时却Bug百出.百度,CSDN,sf,各种搜索寻求解决方案在历时3天 ...

  9. C#设计模式学习笔记:(12)代理模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7814004.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲结构型设计模式的第七个模式,也是 ...

  10. 如何避免FOUC,是如何产生的

    FOUC(Flash Of Unstyled Content)即浏览器样式闪烁或者叫做无样式内存闪烁(用户定义样式表加载之前浏览器使用默认样式显示文档,用户样式加载渲染之后再从新显示文档,造成页面闪烁 ...