zoukankan      html  css  js  c++  java
  • 0810Nginx安装

    12.6 Nginx安装

    下载安装包(再官网下载stable最新稳定版):

     cd /usr/local/src

     wget http://nginx.org/download/nginx-1.12.1.tar.gz

     tar zxf nginx-1.12.1.tar.gz

    配置安装环境:

     cd nginx-1.12.1/

    ./configure --prefix=/usr/local/nginx(可以添加模块,按需求进行配置,https等后加)

    编译and安装:

    make &&  make install

    echo $? (确定安装是否出错)

    创建启动脚本:

     vim /etc/init.d/nginx

    复制网站中的配置内容,开始配置后每次完成-t进行语法检查

    (参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx

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

     

     chmod 755 /etc/init.d/nginx (更改文件权限)

     chkconfig --add nginx (先加入系统服务再设置开机启动)

     chkconfig nginx on

    开始配置文件:

     cd /usr/local/nginx/conf/

     mv nginx.conf nginx.conf.bak (这里mv用法为注释掉本身的配置信息,创建自己的脚本)

     vim /usr/local/nginx/conf/nginx.conf  

    复制网站中的配置内容,每次完成-t进行语法检查

     

    sercer就跟httpd的虚拟主机配置相同,一个server就是一个虚拟主机

    location php 为配置解析php

    (参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf

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

    到这里安装成功,开始启动nginx

     /etc/init.d/nginx  start

     curl localhost检测

    ps aux | grep nginx

     netstat -lntp 查看开启的服务

     在浏览器测试前,先确定hosts添加了,这一块都混淆了上次实验两个别名出现的问题下次咨询

     

    测试php的解析:

    vim /usr/local/nginx/html/666.php

     <?php

        echo "这里随便写,复制个故事如何";

     curl localhost/666.php显示上面的语句表示成功

    参考的阿呆同学的502问题

    对于LNMP来说,最常见的就是502问题,LNMP环境搭建完成后,一访问网站直接提示“502 Bad Gateway”。主要原因大致分为两种:

    1)配置错误

    Nginx配置中locationphp配置中

    如果把fastcgi_pass(这是用来通信的)后面指定的路径配置错了,那么就会出现502错误,因为Nginx找不到php-fpm了,fastcgi _pass后面可以跟socket也可以跟IPport,默认监听地址为:127.0.0.1:9000

    注意: 这里用两种形式都可以,但是两个配置文件(Nginxphp-fpm)中的形式一定要统一,不然绝对502;如果用套接字形式的话,socket文件的路径一定要对,不然也还是502

    2)资源耗尽

    LNMP架构处理PHP时,是Nginx直接调取后端的php-fpm服务,如果Nginx的请求量偏高,而我们又没给php-fpm配置足够的子进程数,那么总有php-fpm资源耗尽的时候,一旦耗尽Nginx找不到php-fpm,此时也会导致502错误出现。解决办法就是调整php-fpm.conf中的pm.max_children数值,使其增加。但也不能无限制增加,因为服务器的资源有限。4G内存机器如果只跑php-fpmNginx,不跑MySQL服务,pm.max _children可以设置为150,尽量不要超过该数值,8G内存设置为300,以此类推。

    如果遇到其它的较为少见的错误,我们可以修改nginx的错误日志(/usr/local/nginx/logs/nginx_error.log)的级别,在配置文件/usr/local/nginx/conf/nginx.conf中将crit改为debug,使其记录最多的日志内容,这样方便我们排查错误,但是配置更改完成后要记得将级别改回crit,避免日志文件占用太多磁盘空间。

    12.7默认虚拟主机

    添加虚拟主机目录:

     cd /usr/local/nginx/conf

     vim /usr/local/nginx/conf/nginx.conf

     include vhost/*.conf (在最后面增加这条,删除下面server的信息,为创建一个虚拟主机配置文件的一个子目录,和httpd加一条一样)

     

    创建上面配置文件的目录文件:

    mkdir /usr/local/nginx/conf/vhost

    然后增加一台虚拟主机:

    cd  /usr/local/nginx/conf/vhost/ 进入这个目录文件(虚拟主机目录)

    vim aaa.com.conf 给虚拟机编辑如下内容:

    这个就是虚拟主机的目录就是:vim /usr/local/nginx/conf/vhost/aaa.com.conf

     

    server

    {

        listen 80 default_server;   (有default_serve就是默认虚拟主机)

        server_name aaa.com;     (定义网站名字)

        index index.html index.htm index.php;

        root /data/wwwroot/default;  (定义配置文件目录,还没创建)

    }

    创建虚拟主机配置文件的目录:

     mkdir -p /data/wwwroot/default/

     cd /data/wwwroot/default/ 进入此目录

     echo “This is a default site.”>/data/wwwroot/default/index.html

    vim /data/wwwroot/default/index.html创建了一个index给其中添加内容)

     /usr/local/nginx/sbin/nginx -t (这里会给一些信息百度一下不用理会)

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

    或者  /usr/local/nginx/sbin/nginx restart

     进行检测:

     curl localhost

     curl -x127.0.0.1:80 123.com

    (无论什么域名,只要解析指向到本服务器,都能访问到默认虚拟主机站点)

     

     给虚拟主机配置PHP解析:

     在配置文件中继续加入

    server

    {

        listen 80 default_server;   

        server_name aaa.com;    

        index index.html index.htm index.php;

        root /data/wwwroot/default;

        location ~ .php$      

    {           

     include fastcgi_params;            

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

     fastcgi_index index.php;            

    fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;       

     }

    }

    检查:

    curl -x127.0.0.1:80 aaa.com/index.php

    12.8 Nginx用户认证

     编辑虚拟主机配置文件,换了一个test

    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;   #用户的密码文件

         }

    }

    上述“location”中的内容即为设定用户认证。在此是为整个站点设定的用户认证,如果只是为某个目录设置用户认证,在location所在行进行编辑就好,如:location /admin 目录。也可以对某种请求(即对一个普通文件)设定用户认证,如location ~ admin.php()使用 ~ 进行匹配

    创建密码文件在此需要使用Apache/usr/local/apache/bin/htpasswd命令,如果机器中已经有Apache,可以直接使用,如果没有,需要使用yum安装httpd命令:

     yum install -y httpd

     htpasswd -c /usr/local/nginx/conf/htpasswd quyifan (设置密码用到htpasswdhttpd相同)

     cat /usr/local/nginx/conf/htpasswd查看密码

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

     /usr/local/nginx/sbin/nginx -s reload(如果配置文件有错误,实际不会生效,restart会有风险)

     添加这个test虚拟主机配置文件指定的根目录(放文件的地方):

     mkdir /data/wwwroot/test.com

     echo “test.com”>/data/wwwroot/test.com/index.html

     curl -x127.0.0.1:80 test.com -I//状态码为401说明需要验证

     curl -x127.0.0.1:80 test.com  -uquyifan:passwd 访问状态码变为200

     

     编辑windowshosts文件,然后在浏览器中访问test.com会有输入用户、密码的弹窗

     还可以针对目录的用户认证

    location  /admin/(直接在这里添加需要认证的目录)

        {

            auth_basic              "Auth";

            auth_basic_user_file   /usr/local/nginx/conf/htpasswd;

    }

     

    测试成功,针对/admin/做了用户认证

    之后会多次匹配location认证,在这里匹配需求

    最好设置好curl进行测试

    加:给虚拟主机配置php解析:

    server

    {

        listen 80;

        server_name test.com;

        index index.html index.htm index.php;

        root /data/wwwroot/test.com;   (这里是站点根目录,下面的fastcgi_param要与这个一致)

        location ~ .php$        #配置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;       

        }

    }

    12.9 Nginx域名重定向

     更改vim /usr/local/nginx/conf/vhost/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;           (这里指不是rest.com的全部跳转)

        }

    }

     server_name后面支持写多个域名,这里要和httpd的做一个对比

     permanent为永久重定向,状态码为301,如果写redirect则为302

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

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

     curl -x127.0.0.1:80 test2.com/index.html  -I  301重定向

     

    扩展

    nginx.conf 配置详解 http://www.ha97.com/5194.html http://my.oschina.net/duxuefeng/blog/34880

  • 相关阅读:
    机器学习三--分类--邻近取样(Nearest Neighbor)
    机器学习二——分类算法--决策树DecisionTree
    机器学习一--基本概念
    python学习--常用正则表达式整理
    python学习--字符编码问题
    python学习--字符串处理相关方法
    python学习--如何在一个for循环中迭代多个可迭代对象(串行,并行)
    python学习--如何对迭代器进行切片操作
    List对象去重
    List 简单升降序实现
  • 原文地址:https://www.cnblogs.com/0329linux/p/7371375.html
Copyright © 2011-2022 走看看