1、优缺点
Nginx的主要优点有可以实现高并发、部署简单、内存消耗少、成本低等待。
Nginx的主要缺点有rewrite功能不够强大,模块没有Apache多
2、搭建Nginx
在Linux操作系统下搭建Nginx服务器,很多时候会出现不同的错误,在此,我们对搭建过程中出现的错误进行一些总结。主要有这些类型:防火墙问题,缺少gc++,缺少pcre、zlib等
su进入root模式
yum -y install gcc gcc-c++ sutoconf automake 安装gcc
./config 解决未安装配置问题
su进入root模式
yum -y install pcre pcre-devel 安装PCRE库
./config 解决未安装配置问题
yum -y install zlib zlib-devel 安装zlib
./config 解决未安装配置问题
make
make install
检查Nginx是否正确安装:cd /进入根目录
cd /user/local
ls 如果目录里有nginx就证明安装成功了
Linux操作系统下启动nginx服务器:
/usr/local/nginx/sbin/nginx -c /user/local/nginx/conf/nginx.conf
3.Ngnix的启动与停止
启动:Nginx地址 -c Nginx配置文件地址
/user/local/nginx/sbin/nginx -c /user/local/nginx/cont/nginx.conf
停止有三种方式,第一种是从容停止、第二种快速停止、第三种是强制停止
从容停止:
查看Nginx进程号":ps -ef|grep nginx
kill -QUIT 进程号
快速停止:kill TREM 进程号 或 kill -INT 进程号
强制停止:pkill -9 nginx
重启:
查看配置文件是否正确:
第一种方式:
cd /user/local/nginx/sbin
./nginx -t
第二种方式:Nginx地址 -t -c Nginx配置文件地址
/user/local/nginx/sbin/nginx -t -c /user/local/nginx/cont/nginx.conf
重启:
第一种方式:
cd /user/local/nginx/sbin
./nginx -s reload
第二种方式:
kill -HUP 进程号
4.Nginx 常见的信号控制
HUP:重启
QUIT:从容关闭
TERM:快速关闭
INT:从容关闭
USR1:切换日志文件
USR2:平滑升级可执行进程
WINCH:平滑关闭工作进程
例:kill -USR2 2255
平滑升级:有时候需要对服务器进行升级成更高的版本,如果强行升级会对运行者的进程有影响
cd /usr/local/nginx 进入执行文件
cd sbin
ls
./nginx -v 查看当前nginx版本
去下载新版本
解压
./config
make
cd objs
cd /user/local/nginx/sbin 进入老版本的可执行文件
cp nginx nginx.old
vf /home/weiwei/下载
cd nginx-1.9.2 进入新版本
cp -rfp objs/nginx/usr/local/nginx/sbin 将老版本的文件复制到新版本文件下
5.Nginx 配置文件总览
设置用户
#user nobody;
工作衍生进程数
worker_processes 4;
设置错误文件的存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
设置pid存放路径(pid是控制系统中的重要文件)
#pid logs/nginx.pid;
设置最大连接数
events {
worker_connections 40960;
}
http协议相关信息
http {
include mime.types;
default_type application/octet-stream;
日志文件配置
#log_format main '$remote_addr(客户端的IP地址) - $remote_user(客户端的用户名) [$time_local] "$request(请求的url)" '
# '$status(请求状态) $body_bytes_sent(发送给客户端的字节数) "$http_referer" '(原网页)
# '"$http_user_agent"(客户端浏览器的信息) "$http_x_forwarded_for(也是客户端的IP地址)"';
#access_log logs/access.log main; 日志文件存储路径
access_log off;关闭日志文件
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
是否开启gzip压缩
#gzip on;
#gzip_min_length 1k 小于1k不用压缩
#gzip_buffers 4 16k 生成的缓存资源
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000; 监听服务器端口
# listen somename:8080;
# server_name somename alias another.alias; 服务器名称
# location / {
# root html; 默认的首页
# index index.html index.htm;
# autoindex on;配置自动列目录
# }
# location ~.*\ (jpf|png|swf){ 缓存文件
# expire 2d; 两天后自动清除
# }
#}
6.Nginx虚拟主机的配置
通常情况下,为了是每个服务器都可以供更多用户使用,可以将一个服务器分为很多虚拟的子服务器,每个子服务器都是互相独立的。这些服务器是根据虚拟化技术分出来的,这样,一台服务器就可以虚拟成很多子服务器。我们吧子服务器叫做虚拟主机。
Nginx虚拟主机配置的步骤主要有两个:第一步配置IP地址,第二部绑定IP地址与虚拟主机
\q:退出命令
7.Nginx负载均衡
Nginx是一款可以通过反向代理实现负载均衡的服务器,使用Nginx服务实现负载均衡的时候用户的访问首先会访问Nginx服务器,然后Nginx服务器再从服务器集群表中选择压力较小的服务器,然后将访问请求引向服务器。若服务器集群中的某个服务器崩溃,那么从待选服务器列表中将该服务器删除,也就是说一个服务假如崩溃了,那么Nginx肯定不会将访问引入服务器了
8.Upstream
Upstream模块是Nginx服务器一个重要模块。Upstream模块实现在轮询和客户端ip之间实现后端的负载均衡。常用的指令有ip_hash指令、server指令和upstream指令
在负载均衡系统中,假如用户在某台服务器上登录,那么如果该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会定位到服务器集群中的一个服务器,那么此时如果将已经登录服务器A的用户再定位到其他服务器,显然不妥。故而,我们可以采用ip_hash指令解决这个问题,如果客户端请求已经访问了服务器A并登录,那么第二次请求的时候,会将请求通过哈希算法自动定位到该后端服务器
只需要在服务器列表前加一行ip_hash就可以
server 可以设置每个服务器的权重,默认=1,权重越大优先级越高
9.Nginx+PHP
cd /usr/local/php/etc 进入PHP配置文件的地方
编辑php-fpm.conf文件
/usr/local/php/sbin/php-fpm start 启动php-fpm
useradd www创建用户(可选,报错执行)
groupadd www创建组(可选,报错执行)
cd /usr/local/nginx/conf
touch facgi.conf 创建一个新的配置文件
nginx.conf主配置文件http模块加以下代码
location ~.*\. (php|php5)?$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php
include facgi.conf 引用创建的配置文件
}
kill -9 nginx 强行杀死nginx进程
重新启动nginx
设置自启动
vi /etc/rc.local
/usr/local/php/sbin/php-fpm start
/usr/local/nginx/sbin/nginx