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

 

posted @ 2017-08-16 08:15  屈一凡  阅读(181)  评论(0编辑  收藏  举报